Acceso denegado para el usuario ‘test’ @ ‘localhost’ (usando la contraseña: YES) excepto usuario root

Estoy enfrentando un problema con el usuario mysql no root / admin, estoy siguiendo los pasos a continuación para crear el usuario y sus privilegios, corrígeme si lo estoy haciendo mal,

estoy instalando mysql en RHEL 5.7 64bit , los paquetes se mencionan a continuación, una vez que hice la rpm install estamos

  1. creando mysql db usando mysql_install_db , luego
  2. comenzando el servicio mysql luego
  3. usando mysql_upgrade también lo estamos haciendo para el servidor.

Después de este proceso, puedo iniciar sesión como root pero con un usuario no root no puedo iniciar sesión en el servidor:

 [root@clustertest3 ~]# rpm -qa | grep MySQL MySQL-client-advanced-5.5.21-1.rhel5 MySQL-server-advanced-5.5.21-1.rhel5 [root@clustertest3 ~]# cat /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 # Disabling symbolic-links is recommended to prevent assorted security risks; # to do so, uncomment this line: # symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [root@clustertest3 ~]# ls -ld /var/lib/mysql/mysql.sock srwxrwxrwx 1 mysql mysql 0 Nov 30 11:09 /var/lib/mysql/mysql.sock mysql> CREATE USER 'golden'@'%' IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> SELECT USER(),CURRENT_USER(); +----------------+----------------+ | USER() | CURRENT_USER() | +----------------+----------------+ | root@localhost | root@localhost | +----------------+----------------+ 1 row in set (0.00 sec) [root@clustertest3 ~]# mysql -ugolden -p Enter password: ERROR 1045 (28000): Access denied for user 'golden'@'localhost' (using password: YES) 

Este es el problema que estoy enfrentando, ¿hay alguna solución para esto?

No otorgue todos los privilegios sobre todas las bases de datos a un usuario no root, no es seguro (y ya tiene “raíz” con ese rol)

 GRANT  ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password'; 

Esta statement crea un nuevo usuario y le otorga privilegios seleccionados. ES DECIR:

 GRANT INSERT, SELECT, DELETE, UPDATE ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password'; 

Eche un vistazo a los documentos para ver todos los privilegios detallados

EDITAR: puede buscar más información con esta consulta (inicie sesión como “raíz”):

 select Host, User from mysql.user; 

Para ver lo que sucedió

Si se está conectando a MySQL utilizando una máquina remota (Workbench de ejemplo), etc., utilice los siguientes pasos para eliminar este error en el sistema operativo donde está instalado MySQL

 mysql -u root -p CREATE USER '<>'@'%%' IDENTIFIED BY '<>'; GRANT ALL PRIVILEGES ON * . * TO '<>'@'%%'; FLUSH PRIVILEGES; 

Intente iniciar sesión en la instancia MYSQL.
Esto funcionó para mí para eliminar este error.

Tratar:

 CREATE USER 'golden'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON * . * TO 'golden'@'localhost'; FLUSH PRIVILEGES; 

O incluso mejor uso: mysql_setpermission para crear el usuario

Parece que estás tratando de hacer que un usuario ‘dorado’ @ ‘%’, pero un usuario diferente con el nombre de ‘golden’ @ ‘localhost’ se interpone en el camino / tiene prioridad.

Haz este comando para ver a los usuarios:

 SELECT user,host FROM mysql.user; 

Deberías ver dos entradas:

1) usuario = dorado, host =%

2) user = golden, host = localhost

Haz estos comandos:

 DROP User 'golden'@'localhost'; DROP User 'golden'@'%'; 

Reinicie MySQL Workbench.

Luego, haz tus comandos originales nuevamente:

 CREATE USER 'golden'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%'; 

Luego, cuando intentes iniciar sesión en MySQL, escríbelo así:

enter image description here

Pulse ‘Probar conexión’ e ingrese su contraseña ‘contraseña’.

Primero creé el usuario usando:

 CREATE user user@localhost IDENTIFIED BY 'password_txt'; 

Después de buscar en Google y ver esto , actualicé la contraseña del usuario usando:

 SET PASSWORD FOR 'user'@'localhost' = PASSWORD('password_txt'); 

y podría conectarme después.

Para cualquier otra persona que hizo todos los consejos pero el problema aún persiste.

Verifique el procedimiento almacenado y vea los DEFINERS. Esos definidores ya no pueden existir.

Mi problema apareció cuando cambiamos el host comodín (%) por IP específico, lo que hace que la base de datos sea más segura. Desafortunadamente, hay algunas vistas que todavía usan ‘user’ @ ‘%’ aunque ‘user’ @ ‘172 ….’ es técnicamente correcto.

También tengo el problema similar, y más tarde descubrí que es porque cambié mi nombre de host (no localhost ).

Por lo tanto, lo --host=127.0.0.1 especificando el --host=127.0.0.1

 mysql -p mydatabase --host=127.0.0.1 

De acuerdo con la forma en que crees a tu usuario, MySQL interpreta de una manera diferente. Por ejemplo, si crea un usuario como este:

 create user user01 identified by 'test01'; 

MySQL espera que otorgue privilegios utilizando grant all on .* to user01;

No olvides flush privileges;

Pero, si crea un usuario así (pasando una dirección IP), debe cambiarlo a:

 create user 'user02'@'localhost' identified by 'teste02'; 

entonces, para dar algunos privilegios tienes que hacer eso:

 grant all on .* to user02@localhost; flush privileges; 

En mi caso, ocurrió el mismo error porque estaba tratando de usar mysql simplemente escribiendo “mysql” en lugar de “mysql -u root -p”

conecte su servidor desde mysqlworkbench y ejecute este comando-> ALTER USER ‘root’ @ ‘localhost’ IDENTIFIED BY ‘yourpassword’;

Asegúrese de que el usuario tenga una entrada localhost en la tabla de usuarios. Ese era el problema que estaba teniendo. EX:

 CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; 

Solo agregue el nombre de la computadora en lugar de ‘localhost’ en el nombre de host o la dirección de MySQL Host.