집 >데이터 베이스 >MySQL 튜토리얼 >MySQL이 오류 1045를 반환하는 이유: 올바른 자격 증명이 있어도 액세스가 거부되었습니까?
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!