MySQL ERROR 1045의 원인과 해결 방법

王林
풀어 주다: 2023-05-26 22:31:04
앞으로
4968명이 탐색했습니다.

    명령줄에서 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    관련 라벨:
    원천:yisu.com
    본 웹사이트의 성명
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
    인기 튜토리얼
    더>
    최신 다운로드
    더>
    웹 효과
    웹사이트 소스 코드
    웹사이트 자료
    프론트엔드 템플릿