【问题标题】:Mysql server won't work when using another data directory使用另一个数据目录时,mysql服务器将无法工作
【发布时间】:2018-03-24 13:16:28
【问题描述】:

我有一个在 Amazon Linux AMI 上运行的亚马逊 ec2 实例。我正在尝试使用以下配置文件(/etc/my.cnf)将 mysql 的数据目录移动到第二个卷(安装在 /home/ec2-user/data)上,但 mysql 无法启动:

[mysqld]
datadir=/home/ec2-user/data/mysql
socket=/home/ec2-user/data/mysql/mysql.sock
log-bin=/var/log/mysql/mariadb-bin
log-bin-index=/var/log/mysql/mariadb-bin.index
symbolic-links=0

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

[client]
port=3306
socket=/home/ec2-user/data/mysql/mysql.sock

我在日志文件中收到以下错误消息:

2017-10-12 14:06:33 20082 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
2017-10-12 14:06:33 20082 [ERROR] Can't start server : Bind on unix socket: Permission denied
2017-10-12 14:06:33 20082 [ERROR] Do you already have another mysqld server running on socket: /home/ec2-user/data/mysql/mysql.sock ?
2017-10-12 14:06:33 20082 [ERROR] Aborting

当我将配置文件设置回以前的设置(到数据文件夹的备份)时,一切正常:

[mysqld]
datadir=/var/lib/mysql.bak
socket=/var/lib/mysql.bak/mysql.sock

log-bin=/var/log/mysql/mariadb-bin
log-bin-index=/var/log/mysql/mariadb-bin.index
symbolic-links=0

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

[client]
port=3306
socket=/var/lib/mysql.bak/mysql.sock

这个问题的原因可能是什么?我已经检查了新数据文件夹的权限,但这并没有改变任何东西。

【问题讨论】:

  • 你能把ps ax的结果贴出来吗? grep mysql ?
  • 嗨 farbiondriven,我得到的唯一输出是运行 ps ax | grep mysqlis 25418 pts/0 S+ 0:00 grep --color=auto mysql
  • 你能发送 ls -la /home/ec2-user/data/mysql/mysql.sock 和 ls -la /var/lib/mysql.bak/mysql.sock 吗?可能进程无法访问新文件。
  • 两个命令给出相同的输出ls: cannot access ...: No such file or directory。当我使用旧配置启动 mysql 时,我在旧套接字文件的 ls 命令中得到了这个:srwxrwxrwx 1 mysql mysql 0 Oct 12 15:17 /var/lib/mysql.bak/mysql.sock

标签: mysql amazon-linux


【解决方案1】:

运行这个命令:

chgrp -R mysql /home/ec2-user/data/mysql
chown -R mysql /home/ec2-user/data/mysql

你可以试试下面的配置文件吗?

[mysqld]
datadir=/home/ec2-user/data/mysql
socket=/var/lib/mysql.bak/mysql.sock

log-bin=/var/log/mysql/mariadb-bin
log-bin-index=/var/log/mysql/mariadb-bin.index
symbolic-links=0

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

[client]
port=3306
socket=/var/lib/mysql.bak/mysql.sock

【讨论】:

  • Mysql 无法启动,但在日志中创建了套接字,然后我收到一个新错误[ERROR] Fatal error: Can't open and lock privilege tables: Table 'user' is read only
  • 您是否将所有权和权限分配给在文件夹 /home/ec2-user/data/mysql 上运行 mysql 的用户?
  • 我已为文件夹设置此权限:drwxr-xr-x 5 mysql mysql 4096 Oct 12 15:29 mysql(与 /var/lib/mysql.bak 相同的权限)
  • 运行这个:chown -R mysql /home/ec2-user/data/mysql 然后 chgrp -R mysql /home/ec2-user/data/mysql
  • chgrp 和 chown 不会改变错误。我不确定这是否会有所帮助,但我已使用此命令将旧数据目录复制到新目录:sudo rsync -av /var/lib/mysql /home/ec2-user/data
猜你喜欢
  • 2013-09-20
  • 1970-01-01
  • 2022-01-07
  • 1970-01-01
  • 2015-05-11
  • 2011-12-13
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多