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

Запустите mysqld под другим пользователем (linux)

Я пытался запустить mysqld под другим пользователем, а также с другим путем к данным. Я сделал это, изменив my.cnf файл следующим образом:

[mysqld]
datadir=/bob/database
socket=/bob/database/mysql.sock
user=bob
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/bob/mysqld.log
pid-file=/bob/mysqld.pid

Всякий раз, когда я пытаюсь запустить демон mysql, запустив service mysqld start две вещи случаются

  1. Я получаю следующую ошибку

    ERROR: 1005  Can't create table 'db' (errno: 13)
    121010 13:39:46 [ERROR] Aborting
    121010 13:39:46 [Note] /usr/libexec/mysqld: Shutdown complete
    
  2. Папка / bob / и все в ней имеют разрешения mysql: mysql, что заставляет меня думать, что параметр пользователя в my.cnf не сработало, и поскольку я запускаю команду запуска службы как root, она может просто выбрать каталог как mysql: mysql без каких-либо проблем. В то же время, когда я запускаю эту команду, я получаю следующее предупреждение:

    121010 13:39:46 [Warning] Ignoring user change to 'mysql' because the user was set to 'bob' earlier on the command line
    

Любая помощь будет принята с благодарностью.

***ОБНОВИТЬ

Если вместо пользователя bob я помещаю пользователя mysql и меняю права доступа к папке bob на mysql, все работает нормально. Таким образом, это проблема с изменением пользователя, а не с другим путем к данным.

Вы можете проверить сценарий инициализации, например /etc/init.d/mysqld или что-то в этом роде, чтобы узнать, инициализирует ли он базу данных mysql с помощью mysql пользователь.

я думаю, что изменение пользователя в mysql-config имеет эффект только тогда, когда mysqld запускается во время процесса загрузки - см. Вот

Как объяснил Джером, мы должны изменить еще один файл

и т.д. / init.d / mysql
su - mysql -s ... становиться su - bob -s ...

но с Ubuntu 18.04 нам также нужно изменить это ...

/etc/systemd/system/multi-user.target.wants/mysql.service
user=mysql становиться user=bob