Starting MySQL.. ERROR!

2013-10-25 22:50:35 +08:00
 sdzbzyc
Starting MySQL.. ERROR! The server quit without updating PID file (/usr/local/mysql/var/131008in05.com.pid).

[root@131008in05 var]# /usr/local/mysql/bin/mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

日志文件如下:

131025 22:29:02 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
131025 22:40:31 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
131025 22:40:32 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

这个如何解决呢?mysql启动不了
3723 次点击
所在节点    MySQL
26 条回复
11
2013-10-25 22:51:46 +08:00
先看看空间满了没。。
sdzbzyc
2013-10-25 22:55:39 +08:00
@11 没有, mysql-bin.00*文件都比较小 空间还有的是
11138
2013-10-25 22:58:31 +08:00
问题的原因日志不是说了么,少了关键的数据库表“mysql.host”,检查一下是不是丢失了,然后从备份里恢复,或者利用 mysql_install_db 来重新生成。
sdzbzyc
2013-10-25 23:41:56 +08:00
@11138 没有找到这个mysql.host 怎么恢复呀?用scripts/mysql_install_db --data=/usr/local/mysql/var之后 还是没办法启动
11138
2013-10-25 23:46:07 +08:00
如果有备份才能恢复啊,否则只能重新生成了。
你用 mysql_install_db 生成新的 mysql 数据库后,“host”这个表存在了吗?现在的日志错误是什么啊?你得把最新的情况说一下啊。
sdzbzyc
2013-10-25 23:49:03 +08:00
@11138
错误依然是
131025 23:37:56 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

用mysql_install_db 之后没有发现host这个表
sdzbzyc
2013-10-25 23:55:32 +08:00
@11138 实在不行重装mysql了试一下吧 谢谢你了
11138
2013-10-25 23:56:17 +08:00
试一下把 /usr/local/mysql/var/mysql 这个目录改个名字,再重新用 mysql_install_db 生成一次看看,然后,执行 mysql_install_db 命令的时候显示正常吗?有没有看到有什么错误信息而你没发现?
sdzbzyc
2013-10-26 00:03:11 +08:00
@11138
执行 mysql_install_db 正常 没有返回错误信息,改了名字也是不行..
日志文件还是

131025 23:58:59 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist
难道是mysql_install_db没有用对?
yangqi
2013-10-26 00:06:03 +08:00
mysql目录的所属改了没,chown -R mysql:mysql
sdzbzyc
2013-10-26 00:09:20 +08:00
@yangqi 没有问题
drwxr-xr-x 14 mysql mysql 4096 Oct 9 19:08 mysql
11138
2013-10-26 00:11:57 +08:00
mysql_install_db的参数是datadir吧。问题 var/mysql 目录的名字都改了,你看它重新生成了吗?
yangqi
2013-10-26 00:13:39 +08:00
对,如楼上的,mysql_install_db的参数是datadir=, 看你之前没用对当然没安装成功了
sdzbzyc
2013-10-26 00:16:54 +08:00
@11138
[root@131008in05 mysql]# scripts/mysql_install_db --datadir=/usr/local/mysql/var
var里没有重新生成mysql
sdzbzyc
2013-10-26 00:19:44 +08:00
@yangqi 嗯 我也发现了 之前用的--data 现在用--datadir也没有反应 还是一如既往呐
11138
2013-10-26 00:21:41 +08:00
没生成,说明执行 mysql_install_db 有问题啊。
我上面有问你啊,执行之后,显示的信息是否正常?是否提示其它错误的信息?既然新的数据库没生成,肯定会提示错误信息的,或者 mysql_install_db 这个脚本出现了问题,或者其它问题。
sdzbzyc
2013-10-26 00:29:23 +08:00
@11138
没有显示错误信息,我执行 mysql_install_db后echo "$?" 返回0
说明正确执行了呀
11138
2013-10-26 00:36:10 +08:00
没显示任何信息?那说明不正常,无论成功或失败,都会显示一堆英文信息的。
初步估计 mysql_install_db 这个shell脚本有问题吧。你看看它的最后修改日期和内容,还有一个可能是系统有些问题,你顺便检查一下系统的日志吧,看看有没有什么异常的信息。
11138
2013-10-26 00:37:55 +08:00
或者试一下 scripts/mysql_install_db --help 看看有没有显示帮助的信息。
yangqi
2013-10-26 00:38:04 +08:00
@sdzbzyc mysql_install_db除了datadir参数再加上 --user=mysql试试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/86923

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX