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