Після встановлення пароля root, чому MYSQL все ще дозволяє мені входити без пароля?


10

Після встановлення пароля root, чому MYSQL все ще дозволяє мені входити без пароля з командного рядка? Я можу набрати "mysql" у кореневій підказці unix, і він запитує пароль, але все ще дозволяє мені отримати доступ до root. Я не розумію, чому "mysql -u root" НЕ ЗАРАЗ просить у мене пароль, який я встановив у акаунті.

Крім того, я не можу увійти до mysql з віддаленої машини як "root". Хіба я не налаштував його правильно нижче? Я отримую помилку: "Хост ... заборонено підключатися до цього сервера MySQL. Хіба я не налаштував його на"% "?

Ось моя таблиця користувачів:

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)

Відповіді:


4

Схоже, пароль встановлений у 'root'@'localhost'користувальницькій записи, але не у 'root'@'%'записі; На основі цього буде дозволено безвірну автентифікацію.

З метою безпеки перегляньте, щоб дозволити кореневий доступ з будь-якого місця. Якщо вам це потрібно, просто позбудьтесь специфікацій localhost:

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

І встановіть пароль для 'root'@'%'користувача:

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

Це було ВСЕ, що мені потрібно, а потім і деякі. Дякую. Я не знав, що можна видалити чи не безпечно, і ви відповіли на моє запитання. Чудова відповідь. :-)
djangofan

4

Ну, відповідь прямо в цій таблиці - вам потрібно видалити "кореневі" рядки, у яких немає пароля.

Крім того, виглядає так, що ви допускаєте з'єднання з будь-якого місця (?!?!), Якщо не використовуєте користувача або проходите. Напевно, погана ідея. Я б зробив щось на кшталт:

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

2

Не забувайте ФЛЕШУВАТИ ПРИВИЛЕГИ або ви все одно можете увійти без пароля.

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