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

Другие вопросы по тегам