GNU/Linux >> Tutoriales Linux >  >> Linux

Error al usar GRANT con IDENTIFICADO por contraseña en MySQL

Pregunta :He estado usando IDENTIFICADO POR 'contraseña' junto con la instrucción GRANT durante años en muchas versiones de MySQL. Sin embargo, lo mismo falló en la versión 8.0.26 de MySQL en mi nueva versión 8 de CentOS Stream. A continuación se muestra el mensaje de error completo. ¿Cual podría ser el problema? – Tushar.

mysql> GRANT ALL PRIVILEGES ON qdb.* TO 'quser'@'localhost' IDENTIFIED BY 'qcuser123';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near IDENTIFIED BY 'quser123' at line 1

Error al usar GRANT con IDENTIFIED by password

Tushar, el uso de la contraseña IDENTIFIED BY con la declaración GRANT ha quedado obsoleto desde la versión 5.7.6 de MySQL. Significa que debe usar IDENTIFICADO por contraseña con CREAR USUARIO o ALTERAR USUARIO y aplicar OTORGAR PRIVILEGIOS como se muestra a continuación:

CREAR USUARIO y asignarle una contraseña.

mysql> CREATE USER 'quser'@'localhost' IDENTIFIED BY 'qc123';
Query OK, 0 rows affected (0.12 sec)

Agregar privilegios usando GRANT:

mysql> GRANT ALL PRIVILEGES ON qdb.* TO 'quser'@'localhost';
Query OK, 0 rows affected (0.03 sec)

¿Por qué este cambio en la última versión de MySQL?

El cambio tiene sentido por las siguientes razones:

  • Usando IDENTIFIED BY La contraseña con privilegios GRANT establecerá cualquier contraseña especificada como la nueva contraseña para la cuenta. Supongamos que si ya existe una cuenta con una contraseña diferente, la ejecución de los privilegios GRANT junto con la contraseña IDENTIFIED BY sobrescribirá la contraseña existente. Por lo tanto, eliminar IDENTIFIED de GRANT significa que la cuenta permanece con la contraseña que se estableció durante la creación.
  • A partir de la versión 5.7.2 de MySQL, si ya existe una cuenta, está prohibido IDENTIFICARSE con una 'contraseña' y debe usarse solo durante la creación de la cuenta, es decir, con CREATE USER o ALTER USER .
  • GRANT puede crear una cuenta de usuario si no existe.
    • Si NO_AUTO_CREATE_USER enabled
      • Si una cuenta especificada en la instrucción GRANT no existe, GRANT no podrá crear una cuenta a menos que se especifique una contraseña no vacía a través de IDENTIFICADO POR o IDENTIFICADO CON.
    • Si NO_AUTO_CREATE_USER disabled
      • Si una cuenta especificada en la instrucción GRANT no existe, GRANT crea la cuenta. Esto puede ser inseguro si no se especifica una contraseña a través de IDENTIFICADO POR.

Finalmente, GRANT con IDENTIFIED BY contraseña ha quedado obsoleto y la cuenta de usuario debe crearse usando CREATE USER o ALTER USER.

a través de StackOverflow.


Linux
  1. SSHPass:cómo acceder a un servidor mediante SSH mediante un script sin contraseña (no de forma interactiva)

  2. ¿Usando Word Wrap con Mc?

  3. ¿Accediendo a Mysql usando Terminal en Ubuntu 13.04?

  4. Cómo instalar MySQL en Ubuntu 22.04

  5. ¿Conectarse a MySQL a través de la línea de comandos sin usar la contraseña de root?

Usando PHP-FPM con Apache en Ubuntu 16.04

Cómo usar MySQL con la aplicación Ruby on Rails

Cómo agregar un nuevo usuario de MySQL con permisos GRANT

Cómo restablecer la contraseña de root de MySQL

Cómo instalar MySQL 8.0 en Ubuntu 18.04

Cómo conectarse a MySQL usando PHP