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 USER
polecenie).
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.
Odpowiedzi:
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).
źródło