Parece que no puedo volver a crear un usuario simple que he eliminado, incluso como root en MySQL.
Mi caso: el usuario 'jack' existía antes, pero lo eliminé de mysql.user para recrearlo. No veo vestigios de esto en esa mesa. Si ejecuto este comando para otro nombre de usuario aleatorio, digamos 'jimmy', funciona bien (tal como lo hizo originalmente para 'jack').
¿Qué he hecho para dañar el 'jack' del usuario y cómo puedo deshacer ese daño para volver a crear el 'jack' como un usuario válido para esta instalación de MySQL?
Ver ejemplo a continuación. (Por supuesto, originalmente, había mucho tiempo entre la creación de 'jack' y su eliminación).
mysql> CREATE USER 'jack'@'localhost' IDENTIFIED BY 'test123';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from user;
+------------------+-----------------+
| user | host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| jack | localhost |
| root | localhost |
| root | russ-elite-book |
+------------------+-----------------+
5 rows in set (0.00 sec)
mysql> delete from user where user = 'jack';
Query OK, 1 row affected (0.00 sec)
mysql> select user,host from user;
+------------------+-----------------+
| user | host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| root | localhost |
| root | russ-elite-book |
+------------------+-----------------+
4 rows in set (0.00 sec)
mysql> CREATE USER 'jack'@'localhost' IDENTIFIED BY 'test123';
ERROR 1396 (HY000): Operation CREATE USER failed for 'jack'@'localhost'
mysql> CREATE USER 'jimmy'@'localhost' IDENTIFIED BY 'test123';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,host from user;
+------------------+-----------------+
| user | host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| jimmy | localhost |
| root | localhost |
| root | russ-elite-book |
+------------------+-----------------+
5 rows in set (0.00 sec)
fuente
Sí, este error está ahí. Sin embargo, encontré una pequeña solución.
Eso debería resolverlo. Suponiendo que queremos crear el usuario admin @ localhost, estos serían los comandos:
Salud
fuente
Este error ha estado presente en bugs.mysql.com desde 2007 y este hilo es principalmente un loro de todas esas respuestas incorrectas, incluso hasta hace un año.
De acuerdo con la documentación de MySQL, comandos como
CREATE USER
,GRANT
,REVOKE
, yDROP USER
no requieren una posteriorFLUSH PRIVILEGES
comandos. Está bastante claro por qué, si uno lee los documentos. Es porque alterar las tablas de MySQL directamente no vuelve a cargar la información en la memoria; Sin embargo, la gran cantidad de soluciones a este error afirma que esaFLUSH PRIVILEGES
es la respuesta.Esto tampoco puede ser un error. Es una conspiración de documentación: los documentos varían en un lugar crítico de una versión a otra.
13.7.1.2. Sintaxis de USUARIO DE GOTA
...
...
Si especifica solo la parte del nombre de usuario del nombre de la cuenta, se utiliza una parte del nombre de host de '%'.
DROP USER
como está presente en MySQL 5.0.0 elimina solo las cuentas que no tienen privilegios. En MySQL 5.0.2, también se modificó para eliminar los privilegios de la cuenta. Esto significa que el procedimiento para eliminar una cuenta depende de su versión de MySQL.A partir de MySQL 5.0.2, puede eliminar una cuenta y sus privilegios de la siguiente manera:
La declaración elimina las filas de privilegios para la cuenta de todas las tablas de concesión.
La única vez que recibo este error es cuando lo hago
DROP USER user
; como sugiere el documento, pero MySQL no trata el '%' como un comodín de una manera que dejaría caer a todos los usuarios en todos los hosts. No es tan salvaje después de todo. O bien, puede ser que a veces funcione cuando elimina el usuario localhost y luego intenta eliminarlo en%.Para mí está claro que cuando intenta eliminar al usuario en%, emite un mensaje de error y se cierra. Posteriormente
CREATE USER
en localhost fallará porque el usuario localhost nunca se eliminó. Parece que no hay necesidad de perder el tiempo cavando en las tablas de subvenciones en busca de fantasmas, como sugiere un póster.Veo 7 votos por:
Que se interpreta como
DROP USER 'jack@localhost'@'%';
# incorrectoEn realidad, parece haber un error real que genera el mismo mensaje de error, pero tiene que ver con la caída del primer usuario creado (después de una nueva instalación del servidor mysql). Si ese error se ha solucionado, no lo sé; pero no recuerdo que haya sucedido últimamente y estoy hasta la versión 5.5.27 en este momento.
fuente
mariadb-server-5.5.60-1.el7_5.x86_64
Si usa una
DELETE
declaración en lamysql.user
tabla en un intento de eliminar un usuario, luego intente restablecer el usuarioCREATE USER
, obtendrá un1396
error. Deshágase de este error ejecutandoDROP USER 'username'@'host';
(Obtendrá 1396 errores si intenta volver a crear jack)
(Sal de esta situación corriendo
DROP USER
)(Supongo
FLUSH PRIVILEGES
que no puede doler, pero definitivamente deje caer al usuario primero).fuente
No deberías eliminar manualmente a los usuarios de esa manera. MySQL tiene
REVOKE
sintaxis para eliminar privilegios yDROP USER
para eliminarlos:Lo mejor es usar las herramientas proporcionadas en lugar de buscar en el fondo.
fuente
flush privileges
en primer lugar? La documentación oficial de MySQL hacen hablar de cosas por el estilodelete from user where user = 'jack';
yflush privileges
. ¿Por qué dice que no son parte de las herramientas proporcionadas?'jack@localhost'
probablemente debería estar'jack'@'localhost'
aquí.Descarte al usuario, elimine los privilegios; luego, crea el usuario. Funciona!
fuente
intente
delete from mysql.db where user = 'jack'
y luego cree un usuariofuente
En MySQL 5.6 el uso
Drop user userid;
no funciona. Uso:Drop user 'userid'@'localhost';
y / oDrop user 'userid'@'%';
. De esta manera pude soltar al usuario y recrearlo.fuente
fuente
Comprueba si es
o
fuente
Si desea eliminar un usuario con SQL, es necesario eliminar los datos relacionados en estas tablas:
columns_priv
,db
,procs_priv
,tables_priv
. Luego ejecutaflush privileges;
fuente
Curiosamente, el banco de trabajo MySQL lo resolvió por mí. En la pestaña Administración -> Usuarios y privilegios, el usuario aparece en la lista con un error. El uso de la opción eliminar resolvió el problema.
fuente
Una solución simple sobre este tema. Como el comando "eliminar" solo elimina el registro de usuario en la tabla "usuario" de la base de datos "mysql", podríamos volver a agregarlo y luego eliminar al usuario por completo. Entonces podría crear un usuario con el mismo nombre.
Paso 1. encuentre el formato de registro de la tabla de usuario en la base de datos mysql
Paso 2. De acuerdo con las columnas mostradas en el paso 1, cree un registro ficticio con el nombre de usuario. Insértelo en la tabla, por ejemplo, recuerde reemplazar el "nombre de usuario" con su nombre de usuario.
Nota: a veces puede encontrar problemas al insertar, solo cambie los datos para que funcionen.
Paso 3. Descarta al usuario.
Ahora puede crear usuarios con el mismo nombre.
fuente
Esta publicación MySQL ERROR 1045 (28000): El acceso denegado para el usuario 'bill' @ 'localhost' (usando la contraseña: YES) es útil. A veces, hay un usuario anónimo '' @ 'localhost' o '' @ '127.0.0.1'. Entonces, para resolver el problema,
primero descarte al usuario cuyo 'crear usuario' falló
Crear nuevo usuario.
Otorgue los privilegios necesarios al nuevo usuario.
Privilegios de descarga.
fuente
Yo tenía el mismo error. Pero ordene "PRIVILEGIOS DE LAVADO"; no ayudó Me gustó eso:
fuente
El servidor MySQL se ejecuta con la opción --skip-grant-tables, por lo que no puede ejecutar esta declaración
fuente
Sé que esto es viejo, pero como es el primer resultado en Google, pensé que debería agregar mi solución. En mi caso, dejar caer al usuario funcionó bien, pero recrearlo me dio un "ERROR 2013 (HY000): pérdida de conexión al servidor MySQL durante la consulta" y "ERROR 2006 (HY000): el servidor MySQL se ha ido". Probé los privilegios de descarga -> soltar la solución de usuario, pero aún tuve el mismo error.
En mi caso, el error se debió a una actualización de mysql de 5.1 -> 5.6. Al ver los registros de errores, noté que decía ejecutar mysql_upgrade. ¡Lo hice y mi declaración de usuario funcionó bien!
fuente
Recientemente recibí este error.
Lo que funcionó para mí es verificar en mysql workbench 'Usuarios y privilegios' y darse cuenta de que el usuario todavía existía.
Después de eliminarlo desde allí, pude recrear al usuario.
fuente
mysql> DELETE FROM mysql.db WHERE user = 'jack'
Reinicia el servidor:
# mysql.server restart
Entonces haz tu
CREATE USER
comando.fuente
CREATE
despuésDELETE
.Hoy me enfrenté a este problema y lo resolví siguiendo los siguientes pasos:
1) insertar manualmente ese usuario problemático proporcionando valor de campos obligatorios en
mysql.user
2)
3) A.
4) A.
SI.
Espero que esto ayude.
fuente
Simplemente elimine los datos relacionados con el usuario de mysql.db (quizás también de otras tablas), luego vuelva a crear ambos.
fuente
También me enfrenté al mismo problema, después de algunas búsquedas, encontré una solución que funcionó para mí. Espero que te ayude. Como ya ha creado usuarios, ahora intente hacer uno
FLUSH PRIVILEGES
en su consola Mysql. Este problema ya está en la publicación de errores de MySql. También puede verificar esto. Ahora, después de enjuagar, puede crear un nuevo usuario. siga los pasos a continuación:Ahora puedes ver la consola Mysql.
En lugar de nombre de usuario, puede poner el nombre de usuario que desee. Si está ejecutando Mysql en su máquina local, escriba "localhost" lugar del host, de lo contrario, indique el nombre del servidor al que desea acceder.
Ej: CREAR USUARIO smruti @ localhost IDENTIFICADO por 'hola';
Ahora se crea un nuevo usuario. Si desea dar acceso a todos, escriba
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Ahora puede salir de MySQL escribiendo
\q
. Ahora, una vez más, inicie sesión a través demysql -u newusername -p
, luego presione Entrar. Puedes ver todo.Espero que esto ayude.
fuente