MySQL 명령은 사용자 이름에 '@localhost'를 추가합니다.

MySQL 명령은 사용자 이름에 '@localhost'를 추가합니다.

나는 이것을 알아낼 수없는 것 같습니다.

명령줄을 사용하여 다른 서버에 있는 MySQL 데이터베이스에 연결하고 싶습니다. 계속해서 사용자의 사용자 이름과 비밀번호를 만들었습니다. 또한 해당 데이터베이스에 대해 해당 사용자에게 모든 권한을 부여했습니다.

명령을 사용할 때: mysql -h <hostname> -u <username> -p다음 오류가 발생합니다.

ERROR 1045 (28000): Access denied for user '<username>'@'<local_machine_hostname>' (using password: YES)

문제는 현재 시스템의 호스트 이름을 사용자 이름에 계속 추가한다는 것입니다. 분명히 그것은 user@<local_machine_hostname>옳지 않습니다.

내가 무엇을 입력하든 상관없습니다. 예를 들어, 다음과 같이 입력하면:

mysql -h <hostname> -u '<username>'@'<hostname>' -p

오류 출력에서만 다음과 같이 동일하게 수행됩니다.

Access denied for user '<username>@<hostname>'@'<local_machine_hostname>'

이러한 일이 발생하도록 허용하는 설정이 구성 파일에 있습니까? 정말 짜증나는 일이에요. 티키위키 서버를 설정해야 하는데, mysql을 설정하는 단계에서 mysql 로그인 이름에 로컬 컴퓨터의 호스트 이름을 계속 추가하기 때문에 연결할 수 없습니다.

답변1

MySQL의 권한은 호스트를 기반으로 합니다. 사용자를 CREATE USER(또는 GRANT)로 생성할 때 호스트 이름을 제공합니다. '%', 'localhost' 또는 기타 IP나 호스트 이름일 수 있습니다. 보안 기능입니다. 당신은 이런 일이 일어나기를 원합니다. 액세스가 거부되었음을 알릴 때 사용자 이름에 호스트 이름을 "추가"하지 않습니다. 각각은 mysql.users 테이블의 다른 열에 저장됩니다. 귀하의 컴퓨터에서 해당 사용자로 MySQL에 로그인할 수 있으려면 해당 사용자에게 귀하의 컴퓨터에서 액세스 권한을 부여해야 합니다.

로부터CREATE USER에 대한 MySQL 문서:

각 계정의 이름은 GRANT 문과 동일한 형식을 사용하여 지정됩니다. 예를 들어 'jeffrey'@'localhost'입니다. 계정 이름 중 사용자 이름 부분만 지정하는 경우 '%'의 호스트 이름 부분이 사용됩니다. 계정 이름 지정에 대한 추가 정보는 섹션 12.4.1.3, “GRANT 구문”을 참조하십시오.

답변2

mysql wworkbannch로 이동하여 코드를 입력하세요.

ALTER USER ALTER USER 'root'@'localhost'는 '123'에 의해 mysql_native_password로 식별됩니다.

관련 정보