移动 mysql datadir 不起作用?conf.d 中的符号链接有问题?

移动 mysql datadir 不起作用?conf.d 中的符号链接有问题?

我想对 svn 中的 mysql 配置进行版本控制,因此我执行了以下步骤:

ubuntu@ip-10-226-50-211:~/mysql-config$ ls -la /etc/mysql/conf.d/
total 12
drwxr-xr-x 2 root root 4096 2011-01-27 11:45 .
drwxr-xr-x 3 root root 4096 2011-01-27 11:42 ..
lrwxrwxrwx 1 root root   37 2011-01-27 11:45 flimmit.cnf -> /home/ubuntu/mysql-config/flimmit.cnf

conf.d 文件夹中的链接指向我的本地配置。全局 mysql 配置未受影响,我安装了最新版本的 ubuntu lucid LTS。

flimmit.cnf 如下所示:

[mysqld]
bind-address           = 0.0.0.0
max_connections        = 600
server-id               = 1
log_bin                 = /var/log/mysql/mysql-bin.log
binlog_do_db            = flimmit_shop_14
binlog_do_db            = flimmit_search_14
datadir         = /media/mysql-ebs/datadir

此配置的 chmod 为 644

所以我停止了 mysql,激活了配置,将 /var/lib/mysql 的所有内容移动到新位置 /media/mysql-ebs/datadir

日志也是一样,但是还没有。

我将整个 /media/mysql-ebs 文件夹的所有权移交给 mysql.mysql (递归)

数据目录的内容是

debian-5.1.flag  ibdata1  ib_logfile0  ib_logfile1  mysql  mysql_upgrade_info

现在的问题是似乎sudo start mysql挂了

我的 mysql error.log 指出:

110127 11:57:58 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

我在某个地方读到过一些有关禁止抄袭的内容ib_arch_log_0000000000, ib_logfile0

那么要复制哪些文件?不复制哪些文件?为什么?

附言:

我也尝试过只移动 mysql 文件夹(mysql 数据库),不移动其他任何内容。结果还是一样。我也读过一些关于修改 init 脚本的内容,但我的 init 脚本中没有这样的内容,如果必须在 init 脚本和配置文件中定义 datadir,我会觉得这真的很愚蠢。

附言:

过了一会儿,我看到 apparmor 正在运行,因此我相应地调整了规则:

  #/var/lib/mysql/ r,
  #/var/lib/mysql/** rwk,
  /media/mysql-ebs/datadir/ r,
  /media/mysql-ebs/datadir/** rwk,

现在我放弃了日志目录的改变并只关注数据目录。但不知何故,这并没有改变任何东西。当然我重新启动了 apparmor。

附注:

我确认问题出在 appaormor 上。运行后/etc/init.d/apparmor teardown一切正常。但是配置有什么问题?我将完整发布:

# vim:syntax=apparmor
# Last Modified: Tue Jun 19 17:37:30 2007
#include <tunables/global>

/usr/sbin/mysqld {
  #include <abstractions/base>
  #include <abstractions/nameservice>
  #include <abstractions/user-tmp>
  #include <abstractions/mysql>
  #include <abstractions/winbind>

  capability dac_override,
  capability sys_resource,
  capability setgid,
  capability setuid,

  network tcp,

  /etc/hosts.allow r,
  /etc/hosts.deny r,

  /etc/mysql/*.pem r,
  /etc/mysql/conf.d/ r,
  /etc/mysql/conf.d/* r,
  /etc/mysql/my.cnf r,
  /usr/sbin/mysqld mr,
  /usr/share/mysql/** r,
  /var/log/mysql.log rw,
  /var/log/mysql.err rw,
  #/var/lib/mysql/ r,
  #/var/lib/mysql/** rwk,
  /media/mysql-ebs/datadir/ r,
  /media/mysql-ebs/datadir/** rwk,

  /var/log/mysql/ r,
  /var/log/mysql/* rw,
  /var/run/mysqld/mysqld.pid w,
  /var/run/mysqld/mysqld.sock w,

  /sys/devices/system/cpu/ r,
}

答案1

您确定 mysql 用户有权访问 /home/ubuntu/ 目录吗?

答案2

尝试更改 datadir 的权限:

chown -R mysql:mysql /media/mysql-ebs/datadir/mysql
chown mysql:mysql /media/mysql-ebs/datadir/
chown mysql:mysql /media/mysql-ebs/

答案3

我最后忘记将外部配置文件添加到 apparmor 配置文件中。现在一切正常

相关内容