Come si disabilita l'accesso anonimo?


9

Secondo la documentazione di MySQL , è possibile rafforzare un server MySQL aggiungendo password o rimuovendo gli account anonimi.

Se si desidera impedire ai client di connettersi come utenti anonimi senza password, è necessario assegnare una password a ciascun account anonimo oppure rimuovere gli account.

Prima dell'indurimento, la tabella dei miei utenti appariva così.

mysql> select user,host,password from mysql.user;
+------------------+-----------+-------------------------------------------+
| user             | host      | password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX |
| root             | gitlab    |                                           |
| root             | 127.0.0.1 |                                           |
| root             | ::1       |                                           |
|                  | localhost |                                           |
|                  | gitlab    |                                           |
| debian-sys-maint | localhost | *95C1BF709B26A5BAXXXXXXXXXXXXXXXXXXXXXXXX |
| myuser           | localhost | *6C8989366EAF75BB6XXXXXXXXXXXXXXXXXXXXXXX |
+------------------+-----------+-------------------------------------------+

Ho rimosso tutti gli account anonimi, in modo che la tabella degli utenti ora assomigli a questo. (Sto usando il pupazzo per gestire gli utenti, ma il pupazzo esegue efficacemente un DROP USERcomando).

mysql> select user,host,password from mysql.user;
+------------------+-----------+-------------------------------------------+
| user             | host      | password                                  |
+------------------+-----------+-------------------------------------------+
| root             | localhost | *F3A2A51A9B0F2BE246XXXXXXXXXXXXXXXXXXXXXX |
| debian-sys-maint | localhost | *95C1BF709B26A5BAXXXXXXXXXXXXXXXXXXXXXXXX |
| myuser           | localhost | *6C8989366EAF75BB6XXXXXXXXXXXXXXXXXXXXXXX |
+------------------+-----------+-------------------------------------------+

Perché sono ancora in grado di accedere al mio sistema di test senza un nome utente o una password?
Cosa devo fare per impedire a qualsiasi utente indesiderato di accedere?

root@gitlab:~# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 98
Server version: 5.5.32-0ubuntu0.12.04.1 (Ubuntu)
....
mysql> 

Aggiornamento : ho anche scoperto che posso accedere come root, senza inserire una password.

Aggiornamento2 : ho trovato questa domanda che contiene alcune buone informazioni, ma non risolve il problema.

Non ci sono utenti anonimi.

mysql> select user,host,password from mysql.user where user='';
Empty set (0.00 sec)

Accedo come root@localhost.

mysql> select USER(),CURRENT_USER();
+----------------+----------------+
| USER()         | CURRENT_USER() |
+----------------+----------------+
| root@localhost | root@localhost |
+----------------+----------------+ 

Non ho una password predefinita o skip-grant-tables definiti in my.cnf

root@gitlab:~# cat /etc/mysql/my.cnf |grep -i 'skip-grant-tables'|wc -l
0
root@gitlab:~# cat /etc/mysql/my.cnf |grep -i 'pass'|wc -l
0

Aggiornamento 3 :

Ho provato a eseguire questi passaggi con Puppet (che dovrebbe eseguire automaticamente i privilegi di flush). Ho anche scaricato manualmente i privilegi e ho anche provato a riavviare mysql.

Update4 :
ho anche provato a cambiare la password di root mysql e i privilegi scaricati. Nessuna fortuna, posso ancora accedere come qualsiasi utente senza password.


Risposte:


6

L'avevo capito. Mentre /etc/mysql/my.cnf non aveva una password salvata, c'era una password memorizzata in /root/.my.cnf.

Non appena ho commentato la password in /root/.my.cnf, non mi è stato permesso di accedere senza una password (che è quello che mi aspettavo).

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.