Я пытался запустить 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
две вещи случаются
Я получаю следующую ошибку
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
Папка / 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