web-dev-qa-db-fra.com

Accès refusé pour l'utilisateur 'test' @ 'localhost' (avec mot de passe: YES) sauf utilisateur root

Je suis confronté à un problème avec mysql non root/admin user, je suis les étapes ci-dessous pour créer un utilisateur et ses privilèges, corrigez-moi si je me trompe

j'installe mysql sur RHEL 5.7 64bit, les paquets sont mentionnés ci-dessous, une fois que j'ai fait le rpm install nous sommes 

  1. créer mysql db en utilisant mysql_install_db, puis 
  2. démarrer le service mysql alors 
  3. en utilisant mysql_upgrade nous faisons aussi au serveur.

Après ce processus, je peux me connecter en tant que root mais avec un utilisateur non root, je ne parviens pas à me connecter au serveur:

[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)

C'est le problème auquel je suis confronté, y a-t-il une solution à cela?

73
user3061726

N'accordez pas tous les privilèges sur toutes les bases de données à un utilisateur non-root, ce n'est pas sûr (et vous avez déjà "root" avec ce rôle)

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

Cette instruction crée un nouvel utilisateur et lui accorde les privilèges sélectionnés . I.E .:

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

Consultez la docs pour voir tous les privilèges détaillés

EDIT: vous pouvez rechercher plus d’informations avec cette requête (connectez-vous en tant que "root"):

select Host, User from mysql.user;

Pour voir ce qui s'est passé

50
Alberto Megía

Si vous vous connectez à MySQL à l'aide d'une machine distante (Example workbench), etc., procédez comme suit pour éliminer cette erreur sur le système d'exploitation où MySQL est installé

mysql -u root -p

CREATE USER '<<username>>'@'%%' IDENTIFIED BY '<<password>>';
GRANT ALL PRIVILEGES ON * . * TO '<<username>>'@'%%';
FLUSH PRIVILEGES;

Essayez de vous connecter à l'instance MYSQL.
.__ Cela a fonctionné pour moi pour éliminer cette erreur.

28
Makarand Kulkarni

Essayer:

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

Ou encore mieux utiliser: mysql_setpermission pour créer l'utilisateur

20
nrathaus

On dirait que vous essayez de faire en sorte qu'un utilisateur soit doré * @ '%', mais un utilisateur différent du nom 'golden' @ 'localhost' se met en travers/a la priorité. 

Faites cette commande pour voir les utilisateurs: 

SELECT user,Host FROM mysql.user;

Vous devriez voir deux entrées: 

1) utilisateur = or, hôte =%

2) utilisateur = or, hôte = localhost

Faites ces commandes:

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

Redémarrez MySQL Workbench.

Puis refaites vos commandes originales: 

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

Ensuite, lorsque vous essayez de vous connecter à MySQL, tapez-le comme ceci:

 enter image description here

Cliquez sur 'Test Connection' et entrez votre mot de passe 'password'. 

7
Gene

J'ai d'abord créé l'utilisateur en utilisant:

CREATE user user@localhost IDENTIFIED BY 'password_txt';

Après avoir googlé et vu this , j’ai mis à jour le mot de passe de l’utilisateur en utilisant:

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

et je pourrais me connecter par la suite.

5
ako

Pour quiconque a fait tous les conseils mais le problème persiste.

Recherchez les procédures stockées et affichez DEFINERS. Ces définisseurs peuvent ne plus exister.

Mon problème est apparu lorsque nous avons modifié l'hôte générique (%) en fonction de l'adresse IP, rendant la base de données plus sécurisée. Malheureusement, certaines vues utilisent encore "utilisateur" @ "%" bien que "utilisateur" @ "172 ...." soit techniquement correct.

3
Yorro

Assurez-vous que l'utilisateur a une entrée localhost dans la table users. C'était le problème que j'avais. EX:

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

Selon la manière dont vous créez votre utilisateur, MySQL interprète différemment. Par exemple, si vous créez un utilisateur comme ceci: 

create user user01 identified by 'test01';

MySQL s'attend à ce que vous donniez certains privilèges en utilisant grant all on <your_db>.* to user01;

N'oubliez pas de flush privileges;

Mais si vous créez un utilisateur comme ça (en passant une adresse IP), vous devez le changer en:

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

alors, pour donner certains privilèges, vous devez le faire:

grant all on <your_db>.* to user02@localhost;
flush privileges;
1
Antonio Marcos

J'ai aussi le même problème, et plus tard, j'ai découvert que c'était parce que j'ai changé mon nom d'hôte (pas localhost).

Par conséquent, je résous le problème en spécifiant le --Host=127.0.0.1

mysql -p mydatabase --Host=127.0.0.1
1
4af2e9eb6

Dans mon cas, la même erreur se produit parce que j'essayais d'utiliser mysql en tapant simplement "mysql" au lieu de "mysql -u root -p"

0
lfvv

connectez votre serveur depuis mysqlworkbench et exécutez cette commande -> ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'yourpassword';

0
Sachin

Pour rechercher ennuyeuse arriver ici après avoir recherché ce message d'erreur:

Accès refusé pour l'utilisateur 'someuser @ quelque part' (avec mot de passe: YES)

Le problème pour moi ne contenait pas le mot de passe entre guillemets. par exemple. J'avais besoin d'utiliser -p'password' au lieu de -ppassword

0
routeburn