Назад | Перейти на главную страницу

MySQL разрешает вход без пароля

Я настроил свою базу данных MySQL так, чтобы требовать пароли для всех пользователей, даже для root с самого компьютера.

Теперь я обнаружил, что в моей базе данных есть пустые пользователи.

Воспроизвести: mysql -u root -p а потом use mysql; & select * from user;

Он дает мне 2 записи, одну с "localhost" и пользователем <empty>, а другую с именем хоста машины и <empty>.

Теперь я попытался получить доступ к учетной записи с помощью mysql -u ' ' (да, это правильно, оставьте пробел между «вещами») и я вхожу в систему без пароля. Пользователь может "только" видеть информацию_schema и тестировать две базы данных, созданные по умолчанию. У него нет доступа к mysql или другим пользовательским базам данных.

Я уже изменил пароль этого пользователя на то, о чем не скажу

mysql -u root -p
use mysql;
UPDATE mysql.user SET Password=PASSWORD('thisisasecretpassword') WHERE USER='root';
FLUSH PRIVILEGES;

Теперь мои вопросы:

Это анонимные пользователи, поэтому пароли не нужны. Они создаются по умолчанию на всех установках. Я не знаю, почему это так.

Вы можете установить для них пароль или удалить их. Из https://dev.mysql.com/doc/refman/5.6/en/default-privileges.html:

Если вы хотите запретить клиентам подключаться как анонимные пользователи без пароля, вам следует либо назначить пароль для каждой анонимной учетной записи, либо удалить учетные записи.

Кажется, это дубликат этого: MySQL 5.5.16 позволяет анонимные подключения

Использовать mysql_secure_installation для удаления анонимных пользователей, тестирования баз данных, а также предотвращения удаленного подключения с помощью root пользователь.

http://dev.mysql.com/doc/refman/5.0/en/mysql-secure-installation.html