为什么我不能在红帽企业Linux(RHEL)上启动mysqld_safe?

我下载了mysql-5.1.44.tar.gz并通过发出以下命令来安装它:

$ ./configure $ make $ make install 

一切安装没有任何错误。 接下来,我尝试通过发出以下命令启动mysql服务器:

 $ mysqld_safe --user=mysql & 100310 13:25:56 mysqld_safe Logging to '/usr/local/var/perfportal2.err'. 100310 13:25:56 mysqld_safe Starting mysqld daemon with databases from /usr/local/var 100310 13:25:56 mysqld_safe mysqld from pid file /usr/local/var/perfportal2.pid ended $ cat /usr/local/var/myserver.err 100310 13:25:56 mysqld_safe Starting mysqld daemon with databases from /usr/local/var /usr/local/libexec/mysqld: Table 'mysql.plugin' doesn't exist 100310 13:25:56 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 100310 13:25:56 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 100310 13:25:56 mysqld_safe mysqld from pid file /usr/local/var/perfportal2.pid ended 

我的猜测是安装过程没有创build数据目录。

任何build议我应该做什么?

如果你运行了make install并且已经make installmysql-server软件包,那么很可能你在/ var / lib / mysql中有一个预先存在的mysql数据库模式。 RHEL5附带的版本是5.0.77,这可以解释mysql升级错误,因为脚本更新了MySQL版本之间的模式。 如果您没有创build初始模式作为安装的一部分,错误也可能非常相似。

如果您要从源代码编译而不指定安装位置,则需要先删除mysql的系统包。 如果您想要维护系统包和源代码安装(有时需要参数),则需要小心,不要在整个系统包中跺脚。 这通常意味着将你的源码安装在/usr/local/mysql ,而不是默认的/usr/local 。 你可以用./configure --prefix=/usr/local/mysql 。 这里有更多的细节和最佳实践,我不打算进一步阐述。

尽pipe从源代码编译可能有很好的理由,但您可能会重新考虑您的问题,因为这可能对您没有必要。

rpm -qa | grep mysql rpm -qa | grep mysql将显示当前安装的所有软件包。 可能是mysql-servermysql-client

否则,您没有按照文档中的步骤进行操作。 即使你做了,你将不得不在删除MySQL包后重复它。

INSTALL-SOURCE ,包含在mysql-5.1.44 tarball中:

 2.3.1. Source Installation Overview The basic commands that you must execute to install a MySQL source distribution are: shell> groupadd mysql shell> useradd -g mysql mysql shell> gunzip < mysql-VERSION.tar.gz | tar -xvf - shell> cd mysql-VERSION shell> ./configure --prefix=/usr/local/mysql shell> make shell> make install shell> cp support-files/my-medium.cnf /etc/my.cnf shell> cd /usr/local/mysql shell> chown -R mysql . shell> chgrp -R mysql . shell> bin/mysql_install_db --user=mysql shell> chown -R root . shell> chown -R mysql var shell> bin/mysqld_safe --user=mysql & 
  1. 从软件包安装软件! 对源代码编译说“否”。 现在是2010年,你知道吗?
    如果你的软件没有包,那么你应该自己构build它 。
  2. 错误信息清楚地表明你应该运行mysql_upgrade
  3. 如果上面没有解决,你也可以尝试运行mysql_install_db