![在不同用户下运行 mysqld(linux)](https://linux22.com/image/598212/%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%94%A8%E6%88%B7%E4%B8%8B%E8%BF%90%E8%A1%8C%20mysqld%EF%BC%88linux%EF%BC%89.png)
我一直尝试以不同的用户和不同的数据路径启动 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,则一切正常。因此,这是更改用户的问题,而不是不同的数据路径的问题。
答案1
您可能需要检查初始化脚本,例如 /etc/init.d/mysqld 或类似的脚本,以查看它是否使用mysql
用户初始化 mysql 数据库。
答案2
我认为在 mysql-config 中更改用户只有在启动过程中启动 mysqld 时才有效 - 请参阅这里
答案3
正如 Jerome 解释的那样,我们必须再更改一个文件
etc/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