В нашем журнале 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.