Подключение к базе данных MySQL или MariaDB в качестве пользователя root обычно требует повышенных привилегий с помощью команды sudo в системах Linux. Эта мера безопасности гарантирует, что только авторизованные пользователи могут выполнять административные задачи с базой данных. Однако в некоторых случаях, например, при использовании автоматизированных сценариев или специфических требований приложения, вы можете захотеть подключиться к учетной записи root без использования sudo.
При установке MySQL или MariaDB процесс инсталляции в некоторых системах автоматически назначает аутентификацию плагину auth_socket или unix_socket. Это означает, что аутентификация пользователя базы данных привязана к учетной записи пользователя системы. Для root это означает, что для доступа к базе данных вам придется использовать sudo.
Чтобы изменить это поведение и разрешить аутентификацию по паролю, необходимо изменить плагин, связанный с учетной записью root, с auth_socket или unix_socket на mysql_native_password или эквивалентный для MariaDB.
Шаги для подключения к MySQL или MariaDB root без sudo
Войдите в MySQL или MariaDB с помощью sudo, чтобы получить доступ как root.
1 | sudo mysql -u root -p |
Проверьте текущий метод аутентификации для пользователя root.
1 | SELECT user,host,plugin FROM mysql.user WHERE user='root'; |
Если в колонке "plugin" указаны auth_socket или unix_socket, это означает, что для аутентификации вам нужен sudo.
Измените плагин для пользователя root, чтобы он использовал аутентификацию по паролю.
Для MySQL:
1 | ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'YourNewPassword'; |
Для MariaDB:
1 | ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING 'YourNewPassword'; |
Замените YourNewPassword на надежный пароль по вашему выбору.
Обновите привилегии, чтобы изменения были применены.
1 | FLUSH PRIVILEGES; |
Выйдите из базы данных.
1 | EXIT; |
Попробуйте войти в MySQL или MariaDB без sudo, используя пароль.
1 | mysql -u root -p |
Вы должны иметь возможность получить доступ к базе данных без использования sudo.
Если у вас возникли ошибки с правами доступа, убедитесь, что права пользователей на папки с базами данных правильные.
1 | sudo chown -R mysql:mysql /var/lib/mysql/ |
Заключение
Не забывайте всегда создавать резервные копии базы данных перед внесением серьезных изменений и не используйте пользователя root для выполнения повседневных задач или в приложениях, поскольку это создает риски для безопасности.