На этот вопрос уже есть ответ:
Я настроил свою базу данных MySQL так, чтобы требовать пароли для всех пользователей, даже для root с самого компьютера.
Теперь я обнаружил, что в моей базе данных есть пустые пользователи
Воспроизвести: mysql -u root -p
, а затем использовать mysql;
& выбрать * от пользователя ;
Он дает мне 2 записи, одну с "localhost" и пользователем
Теперь я попытался получить доступ к учетной записи с помощью mysql -u ''
(да, это правильно, оставьте пробел между «вещами»)
, и я вхожу в систему без пароля. {{ 1}} Пользователь может "только" видеть информацию_схему и тест, две базы данных, созданные по умолчанию.
У него нет доступа к mysql или другим пользовательским базам данных.
Я уже изменил пароль этого пользователя на то, о чем я вам не скажу
mysql -u root -p
use mysql;
UPDATE mysql.user SET Password=PASSWORD('thisisasecretpassword') WHERE USER='root';
FLUSH PRIVILEGES;
Теперь мои вопросы:
Уязвим ли какой-либо сервер MySQL для атаки с этой записью?
Может ли злоумышленник вырваться из эта учетная запись или две базы данных по умолчанию?
Следует ли мне защищать паролем этих пользователей или я могу их удалить? Требуются ли они для некоторых внутренних вещей MySQL?
Это анонимные пользователи, поэтому пароли не нужны. Они создаются по умолчанию на всех установках. Не знаю, почему это так.
Вы можете установить для них пароль или удалить их. Из 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