Im reading O “Relly “Learning MySQL”은 다음과 같이하여 MySQL에서 사용자를 만들 수 있다고 말합니다.
mysql> GRANT ALL ON *.* TO "jill"@"%.invyhome.com" IDENTIFIED BY "the_password"; Query OK, 0 rows affected (0.01 sec)
하지만 그렇게하려고하면 :
-> grant select on testgrounds.personas to ""@"localhost"; --> Error Code: 1133. Can"t find any matching row in the user table
하지만 암호를 사용하면 성공했습니다.
->grant select on testgrounds.personas to ""@"localhost" identified by "pass"; --> 0 row(s) affected
권한을 복원해야했습니다. 사용자 루트는 내가 실험을하고 엉망이 되었기 때문에 그렇게하기 전에 책에있는 문장을 실제로 사용할 수있을 것이라고 생각합니다 (100 % 기억 안 함)
-> select current_user; --> "root@localhost" -> show grants; --> "GRANT ALL PRIVILEGES ON *.* TO \"root\"@\"localhost\" IDENTIFIED BY PASSWORD \"*4ACFE3202A5FF5CF467898FC58AAB1D615029441\" WITH GRANT OPTION" --> "GRANT ALL PRIVILEGES ON `testgrounds`.* TO \"root\"@\"localhost\" WITH GRANT OPTION" --> "GRANT PROXY ON \"\"@\"\" TO \"root\"@\"localhost\" WITH GRANT OPTION"
MySQL 설치 또는 설정에 문제가 있습니까?
답변
MySQL의 문제가 아닙니다. 설치 또는 설정.
각 계정 이름은 호스트 이름이 지정되지 않은 경우에도 “user_name”@ “host_name”과 같은 사용자 및 호스트 이름으로 구성됩니다. From the MySQL 참조 설명서 :
MySQL 계정 이름은 사용자 이름과 호스트 이름으로 구성됩니다. 이렇게하면 서로 다른 호스트에서 연결할 수있는 동일한 이름의 사용자에 대한 계정을 만들 수 있습니다.
이를 통해 MySQL은 어떤 유형에 따라 서로 다른 수준의 권한을 부여 할 수 있습니다. 연결하는 데 사용하는 호스트.
MySQL이 호스트 부분을 인식하지 못하는 계정에 대한 허가를 업데이트 할 때,이 계정을 식별하기위한 암호가없는 경우 오류 코드 1133을 반환합니다.
또한, MySQL에서는 “사용자 이름”으로 만 계정 이름을 지정할 수 있지만이 경우 “user_name”@ “%”로 처리됩니다.