>데이터 베이스 >MySQL 튜토리얼 >MySQL이 오류 1045를 반환하는 이유: 올바른 자격 증명이 있어도 액세스가 거부되었습니까?

MySQL이 오류 1045를 반환하는 이유: 올바른 자격 증명이 있어도 액세스가 거부되었습니까?

DDD
DDD원래의
2024-12-17 04:28:25734검색

Why Does MySQL Return Error 1045: Access Denied Even with Correct Credentials?

MySQL 오류 1045: 올바른 자격 증명에도 불구하고 'bill'@'localhost' 사용자에 대한 액세스가 거부되었습니다.

원격 MySQL 데이터베이스에 액세스하려고 할 때 명령줄을 통해 사용자는 때때로 "오류 1045: 'bill'@'localhost' 사용자에 대한 액세스가 거부되었습니다."라는 메시지가 나타날 수 있습니다. 올바른 로그인 자격 증명을 제공했음에도 불구하고 연결이 거부되었음을 나타내는 메시지.

조사:

사용자가 'bill'이라는 새 사용자를 생성하여 해당 사용자에게 권한을 부여했습니다. 필요한 모든 권한을 부여한 다음 루트 사용자 계정을 종료합니다. 그러나 이후에 로컬 컴퓨터('localhost')에서 'bill' 사용자로 로그인을 시도하면 오류가 발생합니다.

근본 원인:

종종 이 문제는 'mysql.user' 테이블에 익명 사용자(사용자 이름이 비어 있고 호스트가 'localhost'인 사용자)가 있기 때문에 문제가 발생합니다. 'localhost'에서 연결할 때 서버는 가장 구체적인 호스트 이름이나 IP 주소를 기반으로 일치하는 사용자 계정의 우선 순위를 정합니다.

해결책 1: 익명 사용자 제거

해결 방법 문제가 발생하면 'mysql.user'에서 익명 사용자를 제거하세요. table:

DELETE FROM mysql.user WHERE user = '' AND host = 'localhost';

해결책 2(MySQL 버전 >= 5.7의 경우):

MySQL 버전 5.7 이상을 사용하는 경우 익명 사용을 비활성화할 수 있습니다. 'skip_name_resolve'를 통한 계정 변수:

SET GLOBAL skip_name_resolve = ON;

추가 고려 사항:

소켓 연결:

제공된 예에서 사용자는 연결 중입니다. 소켓을 통해. 로그인 경로에 구성된 모든 익명 사용자가 잠재적으로 제공된 자격 증명을 무시할 수 있으므로 '사용자' 및 '비밀번호' 필드가 올바르게 지정되었는지 확인하는 것이 중요합니다.

TCP 연결:

TCP를 통해 연결할 때 -h 플래그를 사용하여 호스트 이름이나 IP 주소를 지정해야 합니다. localhost:

mysql -u bill -p -hremote_hostname

빈 사용자 이름:

일부 클라이언트 라이브러리는 빈 사용자 이름을 제대로 처리하지 않습니다. '' 대신 '@' 기호를 사용하여 익명 사용자를 표시해야 합니다.

mysql -u'@'localhost'-ppassword

위 내용은 MySQL이 오류 1045를 반환하는 이유: 올바른 자격 증명이 있어도 액세스가 거부되었습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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