목차
일반적으로 온라인에서 해결 방법을 찾을 수 있습니다
1 서비스 중지
2. 확인 건너뛰기
3. 비밀번호를 변경하세요.
4. 서비스를 다시 시작합니다.
원인 분석
SO 솔루션
데이터 베이스 MySQL 튜토리얼 MySQL ERROR 1045의 원인과 해결 방법

MySQL ERROR 1045의 원인과 해결 방법

May 26, 2023 pm 10:31 PM
mysql

    명령줄에서 mysql -u root –p를 입력하거나, 비밀번호를 입력하거나, 도구를 통해 데이터베이스에 연결할 때 다음과 같은 오류 메시지가 자주 나타나는 것으로 알고 있습니다. MySQL.

    ERROR 1045 (28000): 'root'@'localhost' 사용자에 대한 액세스가 거부되었습니다(비밀번호 사용: YES)

    일반적으로 온라인에서 해결 방법을 찾을 수 있습니다

    1 서비스 중지

    MySQL 서비스를 중지하세요.

     # windows
     net stop mysql 
     # linux
     service mysqld stop
    로그인 후 복사

    2. 확인 건너뛰기

    로그인 시 권한 확인을 건너뛰도록 MySQL 설치 디렉터리의 my.ini 구성 파일을 수정하세요.

     #到mysql根目录找到mysql配置文件 
     vim my.ini
     #在my.ini,[mysqld]下添加一行,使其登录时跳过权限检查
     skip_grant_tables
    로그인 후 복사

    3. 비밀번호를 변경하세요.

    MySQL 서비스를 시작하고 MySQL에 로그인하세요. 비밀번호를 입력하라는 메시지가 표시되면 비밀번호를 입력하고 Enter를 눌러 MySQL로 들어갑니다.

    #登录mysql
    mysql -u root -p
    로그인 후 복사

    그런 다음 SQL 문을 통해 루트 사용자의 비밀번호를 수정합니다.

    #将数据库切换至mysql库
    mysql> USE mysql;
    #修改密码
    mysql> UPDATE user SET password=PASSWORD(‘newpasswd')WHERE user='root'; 
    #刷新MySQL权限相关的表
    mysql> flush privileges;
    mysql> exit;
    로그인 후 복사

    4. 서비스를 다시 시작합니다.

    my.ini 파일에 추가된 건너뛰기 권한 설명에 # 기호 주석을 추가합니다.

    서비스를 다시 시작하고 수정된 비밀번호로 로그인하세요.

    원인 분석

    루트 사용자를 사용하여 MySQL에 로그인하고 사용자 테이블에서 다음과 같이 사용자 정보를 확인하면 호스트 필드가 각각 % 및 localhost임을 확인할 수 있습니다.

    mysql>select host,user,password from user;
    로그인 후 복사

    MySQL ERROR 1045의 원인과 해결 방법

    MySQL에서 '%'는 모든 호스트에서 MySQL 데이터베이스에 로그인할 수 있다는 의미인데, 로그인 호스트가 localhost인 사용자를 명시적으로 생성해야 하는 이유는 무엇입니까?

    여기에는 MySQL 설치 중 초기화 사용자, 익명 사용자 및 연결 확인 전략이 포함됩니다.

    아래에서 심층 분석을 수행해 보겠습니다.

    MySQL을 설치하면 루트 사용자, 호스트 필드가 localhost이고 사용자 필드가 비어 있는 사용자 등 일부 사용자가 기본적으로 초기화됩니다.

    사용자 필드가 비어 있는 사용자는 익명 사용자이며, 해당 사용자의 비밀번호도 비어 있습니다. 누구나 익명 사용자를 사용하여 MySQL 데이터베이스에 로그인할 수 있지만, MySQL 데이터베이스에 직접 mysql을 입력하는 등 할 수 있는 작업은 제한되어 있습니다.

    mysql>select current_user;
    로그인 후 복사

    MySQL ERROR 1045의 원인과 해결 방법

    mysql>show databases;
    로그인 후 복사

    MySQL ERROR 1045의 원인과 해결 방법

    위 그림에서 익명 사용자는 information_schema 및 테스트 데이터베이스에 대한 권한만 갖고 있음을 알 수 있습니다. .

    그리고 익명 사용자가 다른 사용자의 로그인에 어떤 영향을 미쳐 28000 오류가 발생합니까?

    MySQL 데이터베이스에 연결을 시도할 때 데이터베이스는 제공된 ID와 비밀번호를 기반으로 연결 요청을 수락할지 여부를 결정합니다. ID는 사용자 이름과 클라이언트 호스트(즉, 클라이언트 호스트)의 두 부분으로 구성됩니다. mysql 명령이 입력됩니다).

    호스트 필드의 %가 임의의 호스트와 일치하거나 호스트 필드에 와일드카드가 포함되어 있으므로 일치하는 행이 여러 개 나타날 수 있습니다. 서버는 사용자 테이블의 데이터를 메모리로 읽어와 호스트와 쌍을 이루어야 합니다. 사용자 필드가 정렬됩니다.

    mysql>select host,user,password from user order by host desc,user desc;
    로그인 후 복사

    MySQL ERROR 1045의 원인과 해결 방법

    클라이언트가 연결을 시도하면 서버는 정렬된 행을 찾아 클라이언트의 호스트 및 사용자 이름과 일치하는 첫 번째 행을 사용하고 일치하는 행을 찾은 후 비밀번호가 일치하는지 확인합니다. 일관되게 로그인이 성공했습니다.

    사용자 필드가 비어 있으면 모든 사용자와 일치할 수 있다는 의미입니다.

    여기에 집중하세요.

    user는 비어 있습니다. 즉, 비밀번호 없이 localhost에 로그인하면 익명 사용자는 information_schema 및 테스트 데이터베이스에 대한 권한만 갖게 됩니다.

    MySQL ERROR 1045의 원인과 해결 방법

    사용자가 루트이고 비밀번호가 비어 있는 것으로 표시되거나 호스트 필드가 '%'가 아닌 것으로 표시되는 경우 기본 일치 순서를 따르거나 비밀번호가 올바르지 않거나 오류 1045가 발생합니다. 메시지를 받습니다.

    아래 그림은 수정되었으며 참고용입니다. 예를 들어 첫 번째 순서에서 호스트가 localhost이거나 127 루프백 주소인 경우 1045 오류가 발생합니다.

    MySQL ERROR 1045의 원인과 해결 방법

    SO 솔루션

    mysql> select host,user,password from user order by host desc,user desc;
    ## 将排序序列中最前面的用户修改host为'%'
    mysql> update user set host = '%' where host = 'oracle' and user = 'root';
    mysql> flush privileges;
    로그인 후 복사

    MySQL ERROR 1045의 원인과 해결 방법

    위 내용은 MySQL ERROR 1045의 원인과 해결 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

    뜨거운 기사 태그

    메모장++7.3.1

    메모장++7.3.1

    사용하기 쉬운 무료 코드 편집기

    SublimeText3 중국어 버전

    SublimeText3 중국어 버전

    중국어 버전, 사용하기 매우 쉽습니다.

    스튜디오 13.0.1 보내기

    스튜디오 13.0.1 보내기

    강력한 PHP 통합 개발 환경

    드림위버 CS6

    드림위버 CS6

    시각적 웹 개발 도구

    SublimeText3 Mac 버전

    SublimeText3 Mac 버전

    신 수준의 코드 편집 소프트웨어(SublimeText3)

    PHP의 빅데이터 구조 처리 능력 PHP의 빅데이터 구조 처리 능력 May 08, 2024 am 10:24 AM

    PHP의 빅데이터 구조 처리 능력

    PHP에서 MySQL 쿼리 성능을 최적화하는 방법은 무엇입니까? PHP에서 MySQL 쿼리 성능을 최적화하는 방법은 무엇입니까? Jun 03, 2024 pm 08:11 PM

    PHP에서 MySQL 쿼리 성능을 최적화하는 방법은 무엇입니까?

    PHP에서 MySQL 백업 및 복원을 사용하는 방법은 무엇입니까? PHP에서 MySQL 백업 및 복원을 사용하는 방법은 무엇입니까? Jun 03, 2024 pm 12:19 PM

    PHP에서 MySQL 백업 및 복원을 사용하는 방법은 무엇입니까?

    데이터베이스에서 Java 열거 유형의 애플리케이션 시나리오는 무엇입니까? 데이터베이스에서 Java 열거 유형의 애플리케이션 시나리오는 무엇입니까? May 05, 2024 am 09:06 AM

    데이터베이스에서 Java 열거 유형의 애플리케이션 시나리오는 무엇입니까?

    PHP를 사용하여 MySQL 테이블에 데이터를 삽입하는 방법은 무엇입니까? PHP를 사용하여 MySQL 테이블에 데이터를 삽입하는 방법은 무엇입니까? Jun 02, 2024 pm 02:26 PM

    PHP를 사용하여 MySQL 테이블에 데이터를 삽입하는 방법은 무엇입니까?

    MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법 MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법 Dec 09, 2024 am 11:42 AM

    MySQL 8.4에서 mysql_native_password가 로드되지 않음 오류를 수정하는 방법

    PHP에서 MySQL 저장 프로시저를 사용하는 방법은 무엇입니까? PHP에서 MySQL 저장 프로시저를 사용하는 방법은 무엇입니까? Jun 02, 2024 pm 02:13 PM

    PHP에서 MySQL 저장 프로시저를 사용하는 방법은 무엇입니까?

    PHP 배열 페이징을 위한 성능 최적화 전략 PHP 배열 페이징을 위한 성능 최적화 전략 May 02, 2024 am 09:27 AM

    PHP 배열 페이징을 위한 성능 최적화 전략

    See all articles