Запустите mysqld с полномочиями root.

Вопрос или проблема

Я хотел запустить mysqld от имени пользователя root.

Я использую Ubuntu 21.04 и установил mysql-server.

Версия MySQL:

mysql  Ver 8.0.25-0ubuntu0.21.04.1 для Linux на x86_64 ((Ubuntu))

Изменение владельца файла на root

chown -R root /var/lib/mysql

/etc/mysql/mysql.conf.d/mysqld.cnf

[mysqld]
user        = root
pid-file    = /var/run/mysqld/mysqld.pid
socket  = /var/run/mysqld/mysqld.sock
port        = 3306
datadir = /var/lib/mysql

Когда я запускаю службу MySQL с помощью:

sudo service mysql start

Я получаю ошибку:

mysql.service - MySQL Community Server
     Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Tue 2021-05-25 08:29:56 PDT; 23s ago
    Process: 2413 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
    Process: 2421 ExecStart=/usr/sbin/mysqld (code=exited, status=1/FAILURE)
   Main PID: 2421 (code=exited, status=1/FAILURE)
     Status: "Запуск сервера в процессе"
      Error: 13 (Разрешение отклонено)

Однако если я изменю разрешения файла /var/lib/mysql обратно на пользователя mysql, служба запускается.

Пожалуйста, дайте мне знать, как я могу запустить это от имени root.

Если я что-то делаю не так, пожалуйста, предложите четкие шаги.

Ссылка:
[1]: https://dev.mysql.com/doc/refman/8.0/en/changing-mysql-user.html

Ответ содержится в предоставленной вами ссылке

На Linux, для установок, выполненных с использованием репозитория MySQL или RPM-пакетов, сервер MySQL mysqld должен запускаться локальным пользователем операционной системы mysql. Запуск от имени другого пользователя операционной системы не поддерживается скриптами инициализации, которые входят в состав репозиториев MySQL.

На Unix (или Linux для установок, выполненных с помощью tar.gz пакетов), сервер MySQL mysqld может быть запущен и работать любым пользователем.

Таким образом, чтобы запустить mysqld от имени root, вам нужно установить его из пакета tar.gz. Затем шаги, которые вы уже попробовали, должны быть достаточными.

https://dev.mysql.com/doc/mysql-installation-excerpt/8.0/en/binary-installation.html содержит инструкции по установке mysql, а https://dev.mysql.com/downloads/mysql/ содержит ссылки для загрузки.

Я должен отметить, что в целом не рекомендуется запускать mysqld от имени root. Похоже, вы об этом знаете и пытаетесь исследовать возможности эксплуатации этого, но другие читатели могут не быть столь осведомленными о безопасности.

Обычно не рекомендуется запускать mysql от имени root !!

Тем не менее, это ваше решение, ваша ошибка – Разрешение отклонено, что означает, что вы пытаетесь запустить процесс от имени пользователя/группы mysql. Поскольку вы используете systemd для запуска службы mysql, пожалуйста, проверьте конфигурацию службы systemd:

/lib/systemd/system/mysql.service

Измените User и Group на root:

[Service]
Type=forking
User=mysql
Group=mysql

Не забудьте перезагрузить демон systemd после внесения изменений:

systemctl daemon-reload

Ответ или решение

Запуск сервера MySQL (mysqld) с правами суперпользователя (root) – это задача, которая требует особого внимания, поскольку она может привести к потенциальным уязвимостям и проблемам с безопасностью. В данном ответе мы подробно рассмотрим, как запустить mysqld как root на вашей системе Ubuntu 21.04, и какие изменения необходимо внести для успешного выполнения этой задачи.

Почему это может быть проблемой?

Согласно документации MySQL, стандартные методики запуска сервера MySQL (например, через системные службы) рассчитаны на запуск от имени специального пользователя mysql. Попытка запустить сервер от имени root может вызвать ошибки, связанные с разрешениями. Это связано с тем, что службы, запущенные от имени mysql, ожидают, что соответствующие файлы и директории будут иметь правильные права доступа.

Шаги для запуска mysqld от имени root

1. Настройка конфигурации MySQL

Необходимо внести изменения в конфигурационный файл MySQL, чтобы указать пользователя и группу, от имени которых должен быть запущен сервер. Для этого откройте файл /etc/mysql/mysql.conf.d/mysqld.cnf и измените его следующим образом:

[mysqld]
user        = root
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
datadir     = /var/lib/mysql

2. Изменение прав на директорию MySQL

Также вам нужно изменить владельца директории данных MySQL:

sudo chown -R root /var/lib/mysql

3. Настройка службы systemd

Поскольку вы используете systemd, вам нужно изменить конфигурацию службы MySQL, чтобы она могла запускаться от имени root. Для этого откройте файл /lib/systemd/system/mysql.service и измените строчки User и Group:

[Service]
Type=forking
User=root
Group=root

После внесения изменений не забудьте перезагрузить демон systemd, чтобы применить изменения:

sudo systemctl daemon-reload

4. Запуск MySQL

Теперь вы можете попытаться запустить службу MySQL с правами root:

sudo service mysql start

Возможные проблемы

Если после выполнения вышеуказанных шагов вы всё ещё сталкиваетесь с ошибками, важно проверить системные журналы для выявления причин сбоя. Используйте следующую команду для просмотра статуса службы MySQL и соответствующих журналов:

sudo journalctl -u mysql.service

Заключение

Хотя технически возможно запустить mysqld от имени root, это не рекомендуется и может привести к проблемам с безопасностью. Если вы осуществляете это в целях тестирования или обучения, будьте осторожны и избегайте использования таких конфигураций в производственной среде. Лучше всего придерживаться практики запуска MySQL от имени предназначенного для этого пользователя mysql и управлять правами доступа к ресурсам базы данных соответствующим образом.

Оцените материал
Добавить комментарий

Капча загружается...