Mysql
 sql >> Datenbank >  >> RDS >> Mysql

1045, Zugriff verweigert für Benutzer 'Benutzername'@'NOT-local' (mit Passwort:YES)

Anmeldungen zum Server anzeigen (beachten Sie, dass % bedeutet irgendein Host oder Wildcard)

select user,host from mysql.user;

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

zeigen, welche Berechtigungen für einen bestimmten Benutzer vorhanden sind.

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'@'%'
+----------------------------------------------------------------------

So gewähren Sie einem bestimmten Login Zugriff auf eine bestimmte Datenbank. Im Folgenden gewähren wir dem Benutzer alle Rechte für so_gibberish Datenbank .

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

Schauen Sie sich jetzt die geltenden Zuschüsse an für diese Anmeldung

+----------------------------------------------------------------------
| 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'@'%'
+----------------------------------------------------------------------

Erstellen Sie ein neues Login drew_saturday mit einem Passwort friday987 .Er hat alle Rechte auf Datenbank so_gibberish und kann sich von jedem Host aus anmelden (% )

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 |
+---------------+------+-------------------------------------------+

Das obige Passwort ist übrigens das gehashte Passwort.

Hinweis:Für MySQL 5.7 wäre der obige Befehl:

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

Mysql-Handbuchseite auf Grant . Gewähren Sie Benutzern mit grant ALL on *. ... . Das wäre für alle Datenbank im System. Lesen Sie einfach das Handbuch und weniger ist mehr.

Manchmal möchten Administratoren einem Login Zugriff auf nur eine Handvoll Tabellen in einer Datenbank (nicht alle darin enthaltenen Tabellen) gewähren. Das Handbuch ist dazu ein Muss.

Und noch etwas. 'drew_saturday'@'%' ist ein anderer Login als 'drew_saturday'@'NOT-local' (entlehnt von Ihrem Titel). Es handelt sich um unterschiedliche Logins mit unterschiedlichen Rechten. Das ist der Punkt des ersten, was ich da oben geschrieben habe.