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

Лог MySQL показывает 3 пользователя root, 2 без паролей? Зачем?

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

Я зашел в MySQL и проверил всех пользователей:

mysql> select * from mysql.user;

и увидеть:

Host       |    User   |   Password
localhost       root      *76685yt868itetc
web12-b0        root
127.0.0.1       root  

Во-первых, почему есть 3 пользователя root (и нужно ли нам 127.0.0.1, поскольку у нас есть localhost)?

Во-вторых, почему двое из них не установили пароли?

В-третьих, есть ли у хостов web12-b0 и 127.0.0.1 полный root-доступ без необходимости использовать пароль (как кажется)?

В-четвертых, есть ли для этого веская причина или я должен предложить администратору установить пароли на эти два хоста?

Спасибо за ответы.

Я знаю, что это старый поток, но я хотел добавить еще несколько моментов:

При первом создании базы данных по умолчанию создаются три пользователя root. Все они созданы без паролей. В то время установка также рекомендует вам установить пароль, запустив mysqladmin -u root password, который изменит пароль для 'root' @ '%'.

Два, у которых все еще нет паролей, являются локальными для хоста, указанного в столбце Host; в обоих случаях это фактический сервер БД. По умолчанию они оба имеют полный доступ к базе данных. Можно было бы правильно предположить, что во многих случаях, если вы смогли войти в систему на машине (что было бы необходимо для использования любой из этих учетных записей root), то у вас, вероятно, есть доступ к фактическим файлам на диске. Таким образом, наличие паролей на них может не обеспечить реальной безопасности.

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

DELETE FROM mysql.user WHERE Password=''; FLUSH PRIVILEGES

Во-первых, почему есть 3 пользователя root

Потому что кто-то добавил трех root-пользователей.

(и нужно ли нам 127.0.0.1, так как у нас есть localhost)?

В MySQL localhost и 127.0.0.1 принципиально разные. Хост localhost в MySQL означает «локальное подключение с помощью сокета unix». Хост 127.0.0.1 означает «подключение через интерфейс обратной связи с использованием TCP».

Во-вторых, почему двое из них не установили пароли?

Потому что никто им пароль не устанавливал.

В-третьих, есть ли у хостов web12-b0 и 127.0.0.1 полный root-доступ без необходимости использовать пароль (как кажется)?

Вы предоставили недостаточно информации для ответа на этот вопрос. Присутствие пользователя в MySQL не подразумевает никаких разрешений, кроме USAGE (возможность подключения). Чтобы просмотреть разрешения для пользователя, вы должны использовать:

SHOW GRANTS FOR user@host;

В-четвертых, есть ли для этого веская причина или я должен предложить администратору установить пароли на этих двух хостах?

Я бы не советовал иметь учетные записи без пароля на вашем сервере MySQL.