Як відключити анонімний вхід?


9

Згідно з документацією на MySQL , ви можете загартувати сервер MySQL, додавши паролі або видаливши анонімні облікові записи.

Якщо ви хочете заборонити клієнтам підключатися як анонімні користувачі без пароля, вам слід призначити пароль кожному анонімному обліковому запису або видалити облікові записи.

Перед затвердінням таблиця моїх користувачів виглядала так.

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

Я видалив усі анонімні облікові записи, так що таблиця користувачів тепер виглядає так. (Я використовую лялечку для управління користувачами, але лялька ефективно виконує DROP USERкоманду).

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

Чому я все-таки можу увійти до своєї тестової системи без імені користувача чи пароля?
Що мені потрібно зробити, щоб запобігти входу небажаних користувачів?

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> 

Оновлення : Я також нещодавно виявив, що можу увійти як root, не вводячи пароль.

Update2 : Я знайшов це питання, яке містить хорошу інформацію, але не вирішує проблему.

Анонімних користувачів немає.

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

Я входжу як root@localhost.

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

У мене немає пароля за замовчуванням або таблиць пропуску-грантів, визначених у 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

Оновлення3 :

Я спробував виконати ці кроки з лялькою (яка повинна виконувати привілеї флеш автоматично). Я також вручну очистив привілеї, а також спробував перезапустити mysql.

Update4 :
Я також спробував змінити пароль root mysql та розмитився привілеями. Не щастить, я все одно можу ввійти як будь-який користувач без пароля.


Відповіді:


6

Я зрозумів це. Хоча в /etc/mysql/my.cnf не зберігалося введення пароля, пароль зберігався в /root/.my.cnf.

Щойно я прокоментував пароль у /root/.my.cnf, мені не було дозволено входити без пароля (що я очікував).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.