对我而言,解决方案是覆盖/更正/ etc / my / cnf中的数据目录。
我用自述文件中提供的说明从源代码构建了MySQL 5.5.27:
# Preconfiguration setup
shell> groupadd mysql
shell> useradd -r -g mysql mysql
# Beginning of source-build specific instructions
shell> tar zxvf mysql-VERSION.tar.gz
shell> cd mysql-VERSION
shell> cmake .
shell> make
shell> make install
# End of source-build specific instructions
# Postinstallation setup
shell> cd /usr/local/mysql
shell> chown -R mysql .
shell> chgrp -R mysql .
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root .
shell> chown -R mysql data
# Next command is optional
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> bin/mysqld_safe --user=mysql &
# Next command is optional
shell> cp support-files/mysql.server /etc/init.d/mysql.server
mysqld_safe终止了自己,没有任何解释。跑步/etc/init.d/mysql.server start
导致错误:
“服务器退出而不更新PID文件”
我在安装说明中发现了一些奇怪的地方。它已将目录“ data”的所有权更改为mysql,但未更改为“ var”;这是不寻常的,因为多年来我一直必须确保var目录是mysql可写的。所以我手动跑chown -R mysql /usr/local/mysql/var
,然后尝试再次启动它。仍然没有运气。但更糟糕的是,var目录中没有.err文件-它在“数据”目录中!因此scripts / mysql_install_db在/ usr / local / mysql / var中设置了阵营,但是应用程序的其余部分似乎想在/ usr / local / mysql / data中完成其工作!
因此,我只编辑了/etc/my.cnf,并在[mysqld]部分下添加了一条指令,以将mysql的数据目录显式指向var(因为我通常希望这样做),然后,mysqld就会启动精细。要添加的指令如下所示:
datadir = / usr / local / mysql / var
为我工作。希望对您有帮助。