在不同用户下运行 mysqld(linux)

在不同用户下运行 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,则一切正常。因此,这是更改用户的问题,而不是不同的数据路径的问题。

答案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

相关内容