Estoy leyendo O «Relly «Aprendiendo MySQL» y dice que puedes crear un usuario en MySQL haciendo exactamente esto:
mysql> GRANT ALL ON *.* TO "jill"@"%.invyhome.com" IDENTIFIED BY "the_password"; Query OK, 0 rows affected (0.01 sec)
Pero si intento hacerlo:
-> grant select on testgrounds.personas to ""@"localhost"; --> Error Code: 1133. Can"t find any matching row in the user table
Pero funciona correctamente si uso una contraseña:
->grant select on testgrounds.personas to ""@"localhost" identified by "pass"; --> 0 row(s) affected
Tuve que restaurar los privilegios para usuario root porque estaba experimentando y los arruiné, así que creo que antes de hacerlo podría usar la declaración del libro (no recuerdo el 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"
¿Hay algún problema con mi instalación o configuración de MySQL?
Respuesta
Esto no es un problema con MySQL instalación o configuración.
Cada nombre de cuenta consta de un nombre de usuario y de host, como «nombre_usuario» @ «nombre_host», incluso cuando no se especifica el nombre de host. Desde Manual de referencia de MySQL:
Los nombres de cuentas MySQL consisten en un nombre de usuario y un nombre de host. Esto permite la creación de cuentas para usuarios con el mismo nombre que pueden conectarse desde diferentes hosts.
Esto también permite que MySQL otorgue diferentes niveles de permisos dependiendo de cuál host que utilizan para conectarse.
Al actualizar las subvenciones para una cuenta donde MySQL no reconoce la parte del host, devolverá un código de error 1133 a menos que tenga una contraseña para identificar esta cuenta.
Además, MySQL permitirá que un nombre de cuenta sea especificado solo por su nombre de usuario, pero en este caso se trata como «nombre_usuario» @ «%».