V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
sdzbzyc
V2EX  ›  MySQL

Starting MySQL.. ERROR!

  •  
  •   sdzbzyc · 2013-10-25 22:50:35 +08:00 · 3722 次点击
    这是一个创建于 4049 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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启动不了
    26 条回复    1970-01-01 08:00:00 +08:00
    11
        1
    11  
       2013-10-25 22:51:46 +08:00
    先看看空间满了没。。
    sdzbzyc
        2
    sdzbzyc  
    OP
       2013-10-25 22:55:39 +08:00
    @11 没有, mysql-bin.00*文件都比较小 空间还有的是
    11138
        3
    11138  
       2013-10-25 22:58:31 +08:00
    问题的原因日志不是说了么,少了关键的数据库表“mysql.host”,检查一下是不是丢失了,然后从备份里恢复,或者利用 mysql_install_db 来重新生成。
    sdzbzyc
        4
    sdzbzyc  
    OP
       2013-10-25 23:41:56 +08:00
    @11138 没有找到这个mysql.host 怎么恢复呀?用scripts/mysql_install_db --data=/usr/local/mysql/var之后 还是没办法启动
    11138
        5
    11138  
       2013-10-25 23:46:07 +08:00
    如果有备份才能恢复啊,否则只能重新生成了。
    你用 mysql_install_db 生成新的 mysql 数据库后,“host”这个表存在了吗?现在的日志错误是什么啊?你得把最新的情况说一下啊。
    sdzbzyc
        6
    sdzbzyc  
    OP
       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
        7
    sdzbzyc  
    OP
       2013-10-25 23:55:32 +08:00
    @11138 实在不行重装mysql了试一下吧 谢谢你了
    11138
        8
    11138  
       2013-10-25 23:56:17 +08:00   ❤️ 1
    试一下把 /usr/local/mysql/var/mysql 这个目录改个名字,再重新用 mysql_install_db 生成一次看看,然后,执行 mysql_install_db 命令的时候显示正常吗?有没有看到有什么错误信息而你没发现?
    sdzbzyc
        9
    sdzbzyc  
    OP
       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
        10
    yangqi  
       2013-10-26 00:06:03 +08:00   ❤️ 1
    mysql目录的所属改了没,chown -R mysql:mysql
    sdzbzyc
        11
    sdzbzyc  
    OP
       2013-10-26 00:09:20 +08:00
    @yangqi 没有问题
    drwxr-xr-x 14 mysql mysql 4096 Oct 9 19:08 mysql
    11138
        12
    11138  
       2013-10-26 00:11:57 +08:00
    mysql_install_db的参数是datadir吧。问题 var/mysql 目录的名字都改了,你看它重新生成了吗?
    yangqi
        13
    yangqi  
       2013-10-26 00:13:39 +08:00
    对,如楼上的,mysql_install_db的参数是datadir=, 看你之前没用对当然没安装成功了
    sdzbzyc
        14
    sdzbzyc  
    OP
       2013-10-26 00:16:54 +08:00
    @11138
    [root@131008in05 mysql]# scripts/mysql_install_db --datadir=/usr/local/mysql/var
    var里没有重新生成mysql
    sdzbzyc
        15
    sdzbzyc  
    OP
       2013-10-26 00:19:44 +08:00
    @yangqi 嗯 我也发现了 之前用的--data 现在用--datadir也没有反应 还是一如既往呐
    11138
        16
    11138  
       2013-10-26 00:21:41 +08:00
    没生成,说明执行 mysql_install_db 有问题啊。
    我上面有问你啊,执行之后,显示的信息是否正常?是否提示其它错误的信息?既然新的数据库没生成,肯定会提示错误信息的,或者 mysql_install_db 这个脚本出现了问题,或者其它问题。
    sdzbzyc
        17
    sdzbzyc  
    OP
       2013-10-26 00:29:23 +08:00
    @11138
    没有显示错误信息,我执行 mysql_install_db后echo "$?" 返回0
    说明正确执行了呀
    11138
        18
    11138  
       2013-10-26 00:36:10 +08:00
    没显示任何信息?那说明不正常,无论成功或失败,都会显示一堆英文信息的。
    初步估计 mysql_install_db 这个shell脚本有问题吧。你看看它的最后修改日期和内容,还有一个可能是系统有些问题,你顺便检查一下系统的日志吧,看看有没有什么异常的信息。
    11138
        19
    11138  
       2013-10-26 00:37:55 +08:00
    或者试一下 scripts/mysql_install_db --help 看看有没有显示帮助的信息。
    yangqi
        20
    yangqi  
       2013-10-26 00:38:04 +08:00
    @sdzbzyc mysql_install_db除了datadir参数再加上 --user=mysql试试
    yangqi
        21
    yangqi  
       2013-10-26 00:40:13 +08:00
    mysql_install_db里面有个这个note, 或许有帮助

    --user=*)
    # Note that the user will be passed to mysqld so that it runs
    # as 'user' (crucial e.g. if log-bin=/some_other_path/
    # where a chown of datadir won't help)
    sdzbzyc
        22
    sdzbzyc  
    OP
       2013-10-26 00:46:41 +08:00
    @yangqi 加上user执行问题依旧,难道只有重装看一下了
    @11138
    两位辛苦了
    11138
        23
    11138  
       2013-10-26 00:51:18 +08:00
    执行 mysql_install_db 无论如何都会显示信息的,而你的什么也没显示,说明 mysql_install_db 本身有问题,或者是系统出了问题,还有,数据库表无缘无故丢失,小心是硬盘的问题。还是认真检查一下系统日志,如果要重启服务器,最好先备份一下重要的数据。
    yangqi
        24
    yangqi  
       2013-10-26 00:52:12 +08:00
    @sdzbzyc 这个问题我记得我也遇到过,不过不太记得怎么解决了。好像最后也是重装以后按着步骤来的。

    话说有可能是compile的时候参数弄错了
    sdzbzyc
        25
    sdzbzyc  
    OP
       2013-10-26 01:04:13 +08:00 via iPhone
    @11138 嗯 我再看一下。
    @yangqi 实在不行就重装吧
    panzhc
        26
    panzhc  
       2013-10-26 20:18:35 +08:00
    可以发my.cnf看下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1160 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:45 · PVG 02:45 · LAX 10:45 · JFK 13:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.