Dopo aver impostato la password di root, perché MYSQL mi consente ancora di accedere senza una password?


10

Dopo aver impostato la password di root, perché MYSQL mi consente ancora di accedere senza una password dalla riga di comando? Posso digitare "mysql" al prompt di unix root e non richiede password e mi consente ancora l'accesso root. Non capisco perché "mysql -u root" ADESSO non mi chieda la password che ho impostato sull'account.

Inoltre, non riesco ad accedere a mysql da una macchina remota come 'root'. Non l'ho configurato correttamente di seguito? Viene visualizzato l'errore: "L'host ... non è autorizzato a connettersi a questo server MySQL. Non l'ho configurato per '%'?

Ecco la mia tabella utente:

mysql> select host,user,password from user;
+-----------+------+-------------------------------------------+
| host      | user | password                                  |
+-----------+------+-------------------------------------------+
| localhost | root | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
| %         | root |                                           |
| 127.0.0.1 | root |                                           |
| ::1       | root |                                           |
| localhost |      |                                           |
| %         |      |                                           |
+-----------+------+-------------------------------------------+
6 rows in set (0.00 sec)

Risposte:


4

Sembra che la password sia impostata sulla 'root'@'localhost'voce dell'utente, ma non sulla 'root'@'%'voce; in base a ciò sarebbe consentita un'autenticazione senza password.

Per motivi di sicurezza, riconsiderare che consente l'accesso root da qualsiasi luogo. Se ne hai bisogno, basta sbarazzarsi delle specifiche di localhost:

drop user 'root'@'localhost';
drop user 'root'@'127.0.0.1';
drop user 'root'@'::1';

E imposta la password per l' 'root'@'%'utente:

set password for 'root'@'%' = password('passwordhere');

Quello era TUTTO ciò di cui avevo bisogno e poi alcuni. Grazie. Non ero sicuro di cosa fosse sicuro rimuovere o meno e tu hai risposto alla mia domanda. Bella risposta. :-)
djangofan,

4

Bene, la risposta è proprio in quella tabella - è necessario rimuovere le righe "root" che non hanno una password elencata.

Inoltre, sembra che tu permetta connessioni da qualsiasi luogo (?!?!) Quando non usi nessun utente o pass. Probabilmente una cattiva idea. Farei qualcosa del tipo:

mysql> use mysql;
mysql> delete from user where password = "";

2

Non dimenticare di FLUSH PRIVILEGES o puoi ancora accedere senza password.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.