【问题标题】:Can not start mysql if the datadir is set to soft link如果datadir设置为软链接无法启动mysql
【发布时间】:2014-05-06 06:14:02
【问题描述】:

目前我遇到了一个 mysql 启动问题,不知道这里发生了什么。 如果datadir设置在/var/lib/mysql,然后启动mysql:

sudo /etc/init.d/mysql start

正在启动 MySQL...成功。 并且 mysql 可以正常工作。

但是由于设备空间的原因,我需要将datadir更改为另一个分区。 它会显示:

[admin@shwzu lib]$ sudo /etc/init.d/mysql start
Starting MySQL. ERROR! The server quit without updating PID file (/var/lib/mysql/datadir/shwzu.pid).

我只是尝试了有关它的所有信息,这是有关设置的详细信息

=> 1. 如果文件夹在/var/lib/mysql,一切正常

drwxrwxrwx 6 mysql mysql 4096 Mar 27 06:03 mysql

=> 2. 将目标文件夹更改为另一个名为“test”的分区。并创建“mysql”文件夹。另外,我将所有者和用户更改为 mysql。 然后创建一个软链接。 (sudo ln -s /test/mysql /var/lib/mysql)

/test 分区的权限:(在 /test 中)

[admin@shwzu /]$ ls -l

drwxrwxrwx   7 root root  4096 Mar 27 06:27 test

/test/mysql 文件夹的权限:

drwxr-xr-x 6 mysql mysql  4096 Mar 27 06:24 mysql

/test/mysql 文件夹内的权限:

drwxr-xr-x 5 mysql mysql 4096 Mar 27 06:24 datadir
drwxr-xr-x 2 mysql mysql 4096 Mar 27 06:24 ibdatadir
drwxr-xr-x 2 mysql mysql 4096 Mar 27 06:24 log
-rwxr-xr-x 1 mysql mysql  158 Mar 27 06:24 RPM_UPGRADE_MARKER
-rw-r----- 1 mysql mysql 2562 Mar 27 06:24 slow_queries.log
drwxr-xr-x 2 mysql mysql 4096 Mar 27 06:24 tmp
-rw-r----- 1 mysql mysql 2031 Mar 27 06:24 shwzu.err

软链接权限:(在 /var/lib/mysql 中)

  lrwxrwxrwx 1 mysql mysql   12 Mar 26 10:34 mysql -> /test/mysql

执行初始化命令:sudo mysql_install_db。而且效果很好。

  1. 错误信息

[admin@shwzu lib]$ sudo /etc/init.d/mysql start 启动 MySQL。错误!服务器退出但不更新PID文件

(/var/lib/mysql/datadir/shwzu.pid).

并且 /test/mysql/datadir 中的 shwzu.err 文件会显示:

140327 09:56:24 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql/datadir
140327 09:56:24 mysqld_safe mysqld from pid file /var/lib/mysql/datadir/shwzu.pid ended

==> 好奇怪!这里没有其他信息,只有两行!!!!!!

  1. 复核

    1) 没有mysql进程。

    2) 没有僵尸进程。

    3) mysql文件夹和其中的文件的所有者和用户设置为“mysql”。

    4) 清理datadir中的所有内容。 => 失败并显示相同的消息。

  2. 试错

    1) 将“/var/lib/mysql”文件夹改名为“/var/lib/mysql_”,并创建软链接(使用与success文件夹相同路径的软链接):

    lrwxrwxrwx 1 mysql mysql 12 Mar 26 10:38 mysql -> mysql_

    [Result]: Failed with the same message.
    

    2)修改/etc/my.cnf到目标文件夹“/test/mysql”,而不是使用软链接:

    [Result]: Failed with the same message.
    

    3)将成功文件夹“/var/lib/mysql”复制到“/test/mysql”并创建软链接:

    [Result]: Failed with the same message.
    

我真的不知道这个问题,这让我很困惑,我没有找到任何解决方法。 有人可以帮我吗?

非常感谢!

【问题讨论】:

  • /test 文件夹本身的权限和所有权是什么?在/test/mysql 上(不是里面的文件)?
  • 感谢您的回复。这是权限: [av_admin@shwzu /]$ ls -l drwxrwxrwx 7 root root 4096 Mar 27 06:27 test(我过滤了不用于mysql的其他分区)[av_admin@shwzu test]$ ls -l drwxr-xr -x 6 mysql mysql 4096 Mar 27 06:24 mysql drwxrwxrwx 5 root root 4096 Mar 25 10:44 mysql-cluster 非常感谢。
  • 您能否将其添加到您的问题中以获得更清晰的信息,这种方式很难阅读。您需要确保 datadir 归 mysql 所有(我想/test/mysql 目录本身和所有子目录。
  • 亲爱的卡西波维奇,请修改我的问题。非常感谢您的提醒。

标签: mysql symlink my.cnf


【解决方案1】:

请检查您的服务器配置文件。我在 /etc/my.cnf 中找到了“symbolic-links = 0”,并在该行前面添加了一个“#”:

[mysqld]
# Disabling symbolic-links is recommended to prevent assorted security risks; to do so, uncomment this line:
#symbolic-links = 0

【讨论】:

  • 没有帮助。我在 Ubuntu 上的 my.cnf 文件中甚至没有该设置。我也尝试添加设置并将其设为 1,但作业仍然无法启动。
【解决方案2】:

如果其他人发现此问题,请不要创建 MySQL 数据目录的符号链接,而是更改 my.cnf 中的 datadir 设置本身

让它像:

datadir = /some/other/drive/mysql

实际上,只是更改 my.cnf 中的 datadir 是行不通的。 我还必须更改此文件中的数据目录:/etc/apparmor.d/usr.sbin.mysqld

然后:

/etc/init.d/apparmor 重载

取自: How to change MySQL data directory?

【讨论】:

  • 我在系统(mint?,mysql?)更新后发生了这个错误。如this answer所示更改mysql的appamror配置是解决方案。
猜你喜欢
  • 2016-04-25
  • 1970-01-01
  • 2017-12-10
  • 1970-01-01
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
  • 2013-02-18
  • 2011-10-01
相关资源
最近更新 更多