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
mysql_install_db
, puis 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?
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é
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.
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
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:
Cliquez sur 'Test Connection' et entrez votre mot de passe 'password'.
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.
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.
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';
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;
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
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"
connectez votre serveur depuis mysqlworkbench et exécutez cette commande -> ALTER USER 'root' @ 'localhost' IDENTIFIED BY 'yourpassword';
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