Mysql
 sql >> Database >  >> RDS >> Mysql

1045, Accesso negato per l'utente 'nomeutente'@'NON-locale' (usando password:SI)

mostra gli accessi al server (nota che % indica qualsiasi host o carattere jolly)

select user,host from mysql.user;

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

mostra quali sovvenzioni esistono per un determinato utente.

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

Come concedere l'accesso a un determinato db a un determinato login. Di seguito concediamo tutti i diritti all'utente per so_gibberish database .

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

Guarda le sovvenzioni in vigore ora per quell'accesso

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

Crea un nuovo login drew_saturday con una password friday987 .Ha tutti i privilegi sul database so_gibberish e può accedere da qualsiasi host (% )

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

A proposito, quella password sopra è la password con hash.

Nota:per MySQL 5.7 il comando sopra sarebbe:

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

Pagina manuale di Mysql su Grant . Non concedere diritti eccessivi agli utenti che utilizzano grant ALL on *. ... . Sarebbe per tutti database nel sistema. Basta leggere il manuale e meno è di più.

A volte, gli amministratori vogliono concedere l'accesso a solo una manciata di tabelle in un database (non tutte le tabelle in esso contenute) a un login. Il manuale è d'obbligo leggere su questo.

E un'ultima cosa. 'drew_saturday'@'%' è un login diverso da 'drew_saturday'@'NOT-local' (prendendo in prestito dal tuo titolo). Sono accessi diversi con diritti diversi. Questo è il punto della prima cosa che ho scritto lassù.