Jak wyłączyć anonimowe logowanie?

9

Zgodnie z dokumentacją MySQL możesz wzmocnić serwer MySQL, dodając hasła lub usuwając anonimowe konta.

Jeśli chcesz uniemożliwić klientom łączenie się jako anonimowi użytkownicy bez hasła, powinieneś przypisać hasło do każdego anonimowego konta lub usunąć konta.

Przed utwardzeniem moja tabela użytkowników wyglądała tak.

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

Usunąłem wszystkie anonimowe konta, aby tabela użytkowników wyglądała teraz tak. (Używam marionetki do zarządzania użytkownikami, ale marionetka skutecznie wykonuje DROP USERpolecenie).

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

Dlaczego nadal mogę się zalogować do mojego systemu testowego bez nazwy użytkownika i hasła?
Co muszę zrobić, aby uniemożliwić niechcianym użytkownikom logowanie się?

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> 

Aktualizacja : Właśnie odkryłem, że mogę zalogować się jako root, bez podawania hasła.

Aktualizacja 2 : Znalazłem to pytanie, które zawiera pewne dobre informacje, ale nie rozwiązuje problemu.

Brak anonimowych użytkowników.

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

Loguję się jako root@localhost.

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

Nie mam domyślnego hasła ani tabel pomijania-grantu zdefiniowanych w pliku 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

Aktualizacja 3 :

Próbowałem wykonać te kroki przy użyciu marionetki (które powinny automatycznie wykonywać uprawnienia do koloru). Mam również ręcznie wyczyszczone uprawnienia i próbowałem zrestartować mysql.

Update4 :
Próbowałem także zmienić hasło roota mysql i przywróciłem uprawnienia. Nie mam szczęścia, nadal mogę zalogować się jako dowolny użytkownik bez hasła.

spuder
źródło
Zobacz także stackoverflow.com/q/7179894/632951
Pacerier

Odpowiedzi:

6

Rozgryzłem to. Podczas gdy /etc/mysql/my.cnf nie miał zapisanej pary kluczy hasła, w /root/.my.cnf było przechowywane hasło.

Jak tylko skomentowałem hasło w /root/.my.cnf, nie mogłem się zalogować bez hasła (czego się spodziewałem).

spuder
źródło