hy000 for failed error delete datos create conectar ala mysql mysql-management

mysql - error - operation create user failed for root docker



ERROR 1396(HY000): La operación CREAR USUARIO falló para ''jack'' @ ''localhost'' (19)

El servidor MySQL se ejecuta con la opción --skip-grant-tables por lo que no puede ejecutar esta declaración

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, diga ''jimmy'', funciona bien (como lo hizo originalmente para ''jack'').

¿Qué he hecho para corromper al usuario ''jack'' y cómo puedo deshacer ese daño para volver a crear ''jack'' como usuario válido para esta instalación de MySQL?

Vea el ejemplo a continuación. (Por supuesto, originalmente, hubo 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)


En MySQL 5.6 usando Drop user userid; No funciona. Uso: Drop user ''userid''@''localhost''; y / o Drop user ''userid''@''%''; . De esta manera pude dejar al usuario y volver a crearlo.


Este error ha estado en bugs.mysql.com desde 2007 y este hilo es principalmente un repaso de todas esas respuestas incorrectas, incluso hasta hace un año.

De acuerdo con la documentación de MySQL, los comandos como CREATE USER , GRANT , REVOKE y DROP USER no requieren un comando FLUSH PRIVILEGES posterior. Está bastante claro por qué, si uno lee los documentos. Esto se debe a que la modificación directa de las tablas de MySQL no vuelve a cargar la información en la memoria; sin embargo, la gran cantidad de soluciones a este error afirman que FLUSH PRIVILEGES es la respuesta.

Esto tampoco puede ser incluso 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 DROP USER

...

DROP USUARIO usuario [, usuario] ...

...

DROP USER ''jeffrey'' @ ''localhost'';

Si especifica solo la parte de nombre de usuario del nombre de cuenta, se usa una parte de 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:

DROP USUARIO usuario;

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 hago DROP USER user ; como sugiere el documento, pero MySQL no trata el ''%'' como un comodín de una manera que eliminaría 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 eliminar el que está en%.

Me queda 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 de localhost nunca se eliminó. Parece que no hay necesidad de perder el tiempo buscando en las mesas de becas buscando fantasmas, como sugiere un póster.

Veo 7 votos para:

DROP USUARIO ''jack @ localhost''; // borrar completamente la cuenta

Lo que se interpreta como DROP USER ''jack@localhost''@''%''; # incorrecto

En realidad, parece haber un error real que genera el mismo mensaje de error, pero tiene que ver con el primer usuario creado (después de que se instale un nuevo servidor mysql). Si ese error ha sido arreglado, no lo sé; pero no recuerdo que eso haya sucedido últimamente y estoy en la versión 5.5.27 en este momento.



Hace poco recibí este error.

Lo que funcionó para mí es comprobar en el banco de trabajo de mysql ''Usuarios y privilegios'' y darse cuenta de que el usuario todavía existía.

Después de eliminarlo desde allí, pude recrear al usuario.


No deberías eliminar manualmente los usuarios de esa manera. MySQL tiene la sintaxis REVOKE para eliminar privilegios y DROP USER para eliminarlos:

REVOKE priv1,priv2,priv3,etc... FROM ''jack@localhost''; // remove certain privileges DROP USER ''jack@localhost''; // completely delete the account

Lo mejor es utilizar las herramientas proporcionadas en lugar de jugar en el fondo.


Sé que esto es antiguo, pero como es el primer resultado en Google, pensé que debería agregar mi solución. En mi caso, dejar de usar el usuario funcionó bien, pero recrearlo me dio un "ERROR 2013 (HY000): se perdió la conexión con el 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 todavía tenía 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. Hizo eso y mi declaración de usuario funcionó bien!


Si desea eliminar un usuario con sql, necesita eliminar los datos relacionados en estas tablas: columns_priv , db , procs_priv , tables_priv . Luego ejecute flush privileges;


Si usa una declaración DELETE en la tabla mysql.user para intentar eliminar un usuario, luego intente restablecer al usuario con CREATE USER , obtendrá un error 1396 . Para deshacerse de este error, ejecute DROP USER ''username''@''host'';

DELETE FROM mysql.user WHERE user = ''jack'';

(Obtendrás 1396 errores si intentas volver a crear el conector)

CREATE USER ''jack''@''localhost'' IDENTIFIED BY PASSWORD ''*Fi47ytFF3CD5B14E7EjkjkkC1D3F8086A5C0-krn'';

(Salga de esta situación ejecutando DROP USER )

DROP USER ''jack''@''localhost'';

(Supongo que FLUSH PRIVILEGES no hace daño, pero definitivamente deja al usuario primero.)


Simplemente elimine los datos relacionados con el usuario de mysql.db (quizás también de otras tablas) y luego vuelva a crearlos.


Suelte el usuario, deseche los privilegios; luego, crea el usuario. ¡Funciona!


También me enfrenté al mismo problema, después de algunas búsquedas, encontré una solución que funcionó para mí. Espero que te sirva de ayuda. Como ya ha creado usuarios, ahora intente hacer un FLUSH PRIVILEGES en su consola Mysql. Este problema ya está en la publicación de errores de MySql. También puede marcar esta opción. Ahora, después de la descarga, puede crear un nuevo usuario. siga los siguientes pasos:

Step-1: Open terminal Ctrl+Alt+T Step-2: mysql -u root -p , it will ask for your MySQL password.

Ahora puedes ver la consola Mysql.

Step-3: CREATE USER ''username''@''host'' IDENTIFIED by ''PASSWORD'';

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" en lugar del host, de lo contrario, proporcione el nombre del servidor al que desea acceder.

Ej: CREAR USUARIO smruti @ localhost IDENTIFICADO por ''hello'';

Ahora se crea nuevo usuario. Si quieres dar todo el acceso, escribe

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 de

mysql -u newusername -p , luego presione Entrar. Puedes ver todo.

Espero que esto ayude.



Un simple trabajo alrededor de este problema. Como el comando "eliminar" solo elimina el registro de usuario en la tabla "usuario" de la base de datos "mysql", podríamos agregarlo nuevamente y luego eliminar al usuario completamente. Entonces podrías crear un usuario con el mismo nombre.

Paso 1. Encuentra el formato de registro de la tabla de usuarios en la base de datos mysql

use mysql; select * from user;

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 que debe reemplazar el "nombre de usuario" con su nombre de usuario.

Insert into user value (''%'',''username'',''N'',''N'',''N'',''N'',''N'', ''N'',''N'',''N'',''N'',''N'',''N'',''N'',''N'',''N'',''N'',''N'',''N'',''N'',''N'',''N'', ''N'',''N'',''N'',''N'',''N'',''N'',''N'',''N'',''N'','''','''','''','''',''0'',''0'',''0'', ''0'',''mysql_native_password'', ''*52C5E3AC6BC5E2E0BFF86978BF62A1481AC79D58'',''N'', ''2016-12-10 23:59:12'',null,''N'');

Nota: a veces puede encontrar problemas al insertar, simplemente cambie los datos para que funcionen.

Paso 3. Suelte el usuario.

drop user username;

Ahora puedes crear un usuario con el mismo nombre.


Yo tenía el mismo error. Pero comando "FLUSH PRIVILEGES"; no ayudo Me gustó eso

CREATE USER ''jimmy''@''localhost'' IDENTIFIED BY ''test123''; UPDATE mysql.user SET USER=''jack'' WHERE USER=''jimmy'';


intente delete from mysql.db where user = ''jack'' y luego cree un usuario


si este error esta ahi Sin embargo, he encontrado una pequeña solución.

  • Supongamos que el usuario está allí, así que déjalo.
  • Después de eliminar el usuario, es necesario eliminar los privilegios de mysql
  • Ahora crea el usuario.

Eso debería resolverlo. Asumiendo que queremos crear el usuario admin @ localhost, estos serían los comandos:

drop user admin@localhost; flush privileges; create user admin@localhost identified by ''admins_password''

Aclamaciones


mysql> DELETE FROM mysql.db WHERE user = ''jack''

Reinicie el servidor:

# mysql.server restart

Luego haz tu comando CREATE USER .


two method one : setp 1: drop user ''jack''@''localhost''; setp 2: create user ''jack''@localhost identified by ''ddd''; two: setp 1: delete from user where user=''jack''and host=''localhost''; setp 2: flush privileges; setp 3: create user ''jack''@''localhost'' identified by ''ddd'';