Mysql
 sql >> Base de données >  >> RDS >> Mysql

1045, Accès refusé pour l'utilisateur 'nom d'utilisateur'@'NOT-local' (en utilisant le mot de passe :OUI)

afficher les connexions au serveur (notez que % signifie n'importe quel hôte ou caractère générique)

select user,host from mysql.user;

+-----------+------------+
| user      | host       |
+-----------+------------+
| ajax_guy  | %          |
| joe7      | %          |
| joe8      | %          |
+-----------+------------+

montrer quelles subventions existent pour un certain utilisateur.

show grants for 'ajax_guy'@'%';

+----------------------------------------------------------------------
| Grants for [email protected]%                                              
+----------------------------------------------------------------------
| GRANT USAGE ON *.* TO 'ajax_guy'@'%' IDENTIFIED BY PASSWORD ...
| GRANT ALL PRIVILEGES ON `ajax_stuff`.* TO 'ajax_guy'@'%'           
| GRANT ALL PRIVILEGES ON `ajax_stuff`.`ajax_stuff` TO 'ajax_guy'@'%'
+----------------------------------------------------------------------

Comment accorder l'accès à une certaine base de données à une certaine connexion. Ci-dessous, nous accordons tous les droits à l'utilisateur sur le so_gibberish base de données .

grant ALL on so_gibberish.* to 'ajax_guy'@'%';

Regardez les subventions en vigueur maintenant pour cette connexion

+----------------------------------------------------------------------
| Grants for [email protected]%                                              
+----------------------------------------------------------------------
| GRANT USAGE ON *.* TO 'ajax_guy'@'%' IDENTIFIED BY PASSWORD ...
| GRANT ALL PRIVILEGES ON `ajax_stuff`.* TO 'ajax_guy'@'%'           
| GRANT ALL PRIVILEGES ON `so_gibberish`.* TO 'ajax_guy'@'%'         
| GRANT ALL PRIVILEGES ON `ajax_stuff`.`ajax_stuff` TO 'ajax_guy'@'%'
+----------------------------------------------------------------------

Créer un nouveau login drew_saturday avec un mot de passe friday987 .Il a tous les privilèges sur la base de données so_gibberish et peut se connecter depuis n'importe quel hôte (% )

grant ALL on so_gibberish.* to 'drew_saturday'@'%' IDENTIFIED BY 'friday987';

select user,host,password from mysql.user where user='drew_saturday';

+---------------+------+-------------------------------------------+
| user          | host | password                                  |
+---------------+------+-------------------------------------------+
| drew_saturday | %    | *4600ED0F377308959665877BD327D4788DC2071F |
+---------------+------+-------------------------------------------+

Soit dit en passant, le mot de passe ci-dessus est le mot de passe haché.

Remarque :pour MySQL 5.7, la commande ci-dessus serait :

select user,host,authentication_string from mysql.user where user='drew_saturday';

Page de manuel Mysql sur Grant . N'accordez pas de droits excessifs aux utilisateurs utilisant grant ALL on *. ... . Ce serait pour tous base de données dans le système. Il suffit de lire le manuel et moins c'est plus.

Parfois, les administrateurs souhaitent accorder l'accès à une poignée de tables d'une base de données (pas à toutes les tables) à une connexion. Le manuel est une lecture incontournable à ce sujet.

Et une dernière chose. 'drew_saturday'@'%' est une connexion différente de 'drew_saturday'@'NOT-local' (empruntant à votre titre). Ce sont des logins différents avec des droits différents. C'est le point de la première chose que j'ai écrite là-haut.