Intentó
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
Consiguiendo
ERROR 1064 (42000): Tiene un error en su sintaxis SQL; Consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta para usar cerca de 'IDENTIFICADO POR' root 'WITH GRANT OPTION' en la línea 1.
Nota: Lo mismo funciona cuando se probó en versiones anteriores.
También probé
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
Consiguiendo
ERROR 1410 (42000): No se le permite crear un usuario con GRANT
El nombre de usuario / contraseña de MySQL (8.0.11.0) es root / root.
mysql
mysql-error-1064
mysql-8.0
Praveen
fuente
fuente
mysql -u root -p
, luego ingresando la contraseña de root. Luego lo intentéGRANT GRANT OPTION ON *.* TO 'root'@'%';
y me sale el errorERROR 1410 (42000): You are not allowed to create a user with GRANT
Respuestas:
Comenzando con MySQL 8 ya no puede (implícitamente) crear un usuario usando el
GRANT
comando. Utilice CREATE USER en su lugar, seguido de la declaración GRANT :Precaución sobre los riesgos de seguridad sobre
WITH GRANT OPTION
, consulte:fuente
SELECT User, Host FROM mysql.user;
lugar.ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
1) Esto funcionó para mí. Primero, cree un nuevo usuario. Ejemplo: usuario
foo
con contraseñabar
2) Reemplace el siguiente código con un nombre de usuario con 'foo'.
3) Inicie sesión como usuario foo
Contraseña: bar
4) Asegúrese de que su conexión inicial desde Sequelize esté configurada en foo con pw bar.
fuente
Veo muchas respuestas (incorrectas), es tan simple como esto:
Nota: en lugar de uno creado por
user
usted mismo, puede utilizarroot
para conectarse a la base de datos. Sin embargo, usar la cuenta raíz predeterminada para permitir que una aplicación se conecte a la base de datos no es la forma preferida.Privilegios alternativos (tenga cuidado y recuerde el principio de privilegio mínimo):
Si de alguna manera se encontrara con el siguiente error:
Necesita agregar / cambiar las siguientes dos líneas
/etc/mysql/my.cnf
y reiniciar mysql:fuente
GRANT ALL ON
para MySQL 8.0. También creo que, en lugar de deshabilitarbind-address
, puedes enlazar127.0.0.1
e incluir--protocol=tcp
en cualquier comando. El rendimiento a largo plazo también es mejor que conlocalhost
.Mis especificaciones:
Lo que funcionó para mí:
Respuesta en ambas consultas:
NB: Creé una base de datos (db_name) anteriormente y estaba creando una credencial de usuario con todos los privilegios otorgados a todas las tablas en la base de datos en lugar de usar el usuario raíz predeterminado que leí en alguna parte es una mejor práctica.
fuente
El usuario especificado simplemente no existe en su MySQL (por lo tanto, MySQL está tratando de crearlo con GRANT como lo hizo antes de la versión 8, pero falla con las limitaciones, introducidas en esta versión).
MySQL es bastante tonto en este punto, por lo que si tiene 'root' @ 'localhost' e intenta otorgar privilegios a 'root' @ '%', los trata como usuarios diferentes, en lugar de una noción generalizada para el usuario root en cualquier host, incluido localhost.
El mensaje de error también es engañoso.
Entonces, si recibe el mensaje de error, verifique a sus usuarios existentes con algo como esto
y luego cree el usuario faltante (como aconsejó Mike) o ajuste su comando GRANT a la especificación real del usuario existente.
fuente
Solo mis dos centavos sobre el tema. Estaba teniendo exactamente el mismo problema al intentar conectarme desde MySQL Workbench. Estoy ejecutando una máquina virtual bitnami-mysql para configurar una caja de arena local para el desarrollo.
El tutorial de Bitnami decía ejecutar el comando 'Otorgar todos los privilegios':
Claramente, esto no estaba funcionando, finalmente lo hice funcionar usando la respuesta de Mike Lischke.
Lo que creo que sucedió fue que el usuario root @% tenía las credenciales incorrectas asociadas. Entonces, si ha intentado modificar los privilegios del usuario y no ha tenido suerte, intente:
Desde la consola Mysql:
Lista de usuarios (útil para ver a todos sus usuarios):
Eliminar usuario deseado:
Crear usuario y otorgar permisos:
Ejecute este comando:
Busque su archivo de configuración de mysql 'my.cnf' y busque una línea que se vea así:
y comentarlo usando un '#':
Luego reinicia tu servicio mysql.
¡Espero que esto ayude a alguien que tenga el mismo problema!
fuente
Esto funcionó para mí:
fuente
Compruebe que su nombre de usuario y el dominio es el mismo que creó antes. Mysql selecciona la cuenta por las dos columnas en la tabla de usuario. Si es diferente, mysql puede pensar que desea crear una nueva cuenta por concesión, que no es compatible después de la versión 8.0.
fuente
Mis especificaciones:
Lo que funcionó para mí:
fuente
Bueno, tuve el mismo problema. Incluso si la ruta tenía '%' no se podía conectar de forma remota. Ahora, al echar un vistazo al
my.ini
archivo (archivo de configuración en Windows)bind-address
, se perdió la declaración.Entonces ... puse esto
bind-address = *
después[mysqld]
y reinicié el servicio. ¡Ahora funciona!fuente
1. conceder privilegios
mysql> OTORGAR TODOS LOS PRIVILEGIOS. PARA 'root' @ '%' CON OPCIÓN DE GRANT;
mysql> PRIVILEGIOS DE FLUSH
2. consulte la tabla de usuarios:
mysql> usar mysql
mysql> seleccionar host, usuario de usuario
3.Modificar el archivo de configuración
mysql default bind ip: 127.0.0.1, si queremos visitar los servicios de forma remota, simplemente elimine la configuración
4.finalmente reinicia los servicios
brew services reiniciar mysql
fuente
Esto puede funcionar:
fuente
Tuve este mismo problema, lo que me llevó aquí. En particular, para el desarrollo local, quería poder
mysql -u root -p
prescindirsudo
. No quiero crear un nuevo usuario. Quiero usarloroot
desde una aplicación web PHP local.El mensaje de error es engañoso, ya que no había nada de malo con los
'root'@'%'
privilegios de usuario predeterminados .En cambio, como varias personas mencionaron en las otras respuestas, la solución fue simplemente establecer en
bind-address=0.0.0.0
lugar debind-address=127.0.0.1
en mi/etc/mysql/mysql.conf.d/mysqld.cnf
configuración. De lo contrario, no se requirieron cambios.fuente
Tuve el mismo problema en CentOS y esto funcionó para mí (versión: 8.0.11):
fuente