› 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 · Oct 25, 2013 · 4586 views
    This topic created in 4719 days ago, the information mentioned may be changed or developed.
    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 replies  •  1970-01-01 08:00:00 +08:00
    11
        1
    11  
       Oct 25, 2013
    先看看空间满了没。。
    sdzbzyc
        2
    sdzbzyc  
    OP
       Oct 25, 2013
    @11 没有, mysql-bin.00*文件都比较小 空间还有的是
    11138
        3
    11138  
       Oct 25, 2013
    问题的原因日志不是说了么,少了关键的数据库表“mysql.host”,检查一下是不是丢失了,然后从备份里恢复,或者利用 mysql_install_db 来重新生成。
    sdzbzyc
        4
    sdzbzyc  
    OP
       Oct 25, 2013
    @11138 没有找到这个mysql.host 怎么恢复呀?用scripts/mysql_install_db --data=/usr/local/mysql/var之后 还是没办法启动
    11138
        5
    11138  
       Oct 25, 2013
    如果有备份才能恢复啊,否则只能重新生成了。
    你用 mysql_install_db 生成新的 mysql 数据库后,“host”这个表存在了吗?现在的日志错误是什么啊?你得把最新的情况说一下啊。
    sdzbzyc
        6
    sdzbzyc  
    OP
       Oct 25, 2013
    @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
       Oct 25, 2013
    @11138 实在不行重装mysql了试一下吧 谢谢你了
    11138
        8
    11138  
       Oct 25, 2013   ❤️ 1
    试一下把 /usr/local/mysql/var/mysql 这个目录改个名字,再重新用 mysql_install_db 生成一次看看,然后,执行 mysql_install_db 命令的时候显示正常吗?有没有看到有什么错误信息而你没发现?
    sdzbzyc
        9
    sdzbzyc  
    OP
       Oct 26, 2013
    @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  
       Oct 26, 2013   ❤️ 1
    mysql目录的所属改了没,chown -R mysql:mysql
    sdzbzyc
        11
    sdzbzyc  
    OP
       Oct 26, 2013
    @yangqi 没有问题
    drwxr-xr-x 14 mysql mysql 4096 Oct 9 19:08 mysql
    11138
        12
    11138  
       Oct 26, 2013
    mysql_install_db的参数是datadir吧。问题 var/mysql 目录的名字都改了,你看它重新生成了吗?
    yangqi
        13
    yangqi  
       Oct 26, 2013
    对,如楼上的,mysql_install_db的参数是datadir=, 看你之前没用对当然没安装成功了
    sdzbzyc
        14
    sdzbzyc  
    OP
       Oct 26, 2013
    @11138
    [root@131008in05 mysql]# scripts/mysql_install_db --datadir=/usr/local/mysql/var
    var里没有重新生成mysql
    sdzbzyc
        15
    sdzbzyc  
    OP
       Oct 26, 2013
    @yangqi 嗯 我也发现了 之前用的--data 现在用--datadir也没有反应 还是一如既往呐
    11138
        16
    11138  
       Oct 26, 2013
    没生成,说明执行 mysql_install_db 有问题啊。
    我上面有问你啊,执行之后,显示的信息是否正常?是否提示其它错误的信息?既然新的数据库没生成,肯定会提示错误信息的,或者 mysql_install_db 这个脚本出现了问题,或者其它问题。
    sdzbzyc
        17
    sdzbzyc  
    OP
       Oct 26, 2013
    @11138
    没有显示错误信息,我执行 mysql_install_db后echo "$?" 返回0
    说明正确执行了呀
    11138
        18
    11138  
       Oct 26, 2013
    没显示任何信息?那说明不正常,无论成功或失败,都会显示一堆英文信息的。
    初步估计 mysql_install_db 这个shell脚本有问题吧。你看看它的最后修改日期和内容,还有一个可能是系统有些问题,你顺便检查一下系统的日志吧,看看有没有什么异常的信息。
    11138
        19
    11138  
       Oct 26, 2013
    或者试一下 scripts/mysql_install_db --help 看看有没有显示帮助的信息。
    yangqi
        20
    yangqi  
       Oct 26, 2013
    @sdzbzyc mysql_install_db除了datadir参数再加上 --user=mysql试试
    yangqi
        21
    yangqi  
       Oct 26, 2013
    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
       Oct 26, 2013
    @yangqi 加上user执行问题依旧,难道只有重装看一下了
    @11138
    两位辛苦了
    11138
        23
    11138  
       Oct 26, 2013
    执行 mysql_install_db 无论如何都会显示信息的,而你的什么也没显示,说明 mysql_install_db 本身有问题,或者是系统出了问题,还有,数据库表无缘无故丢失,小心是硬盘的问题。还是认真检查一下系统日志,如果要重启服务器,最好先备份一下重要的数据。
    yangqi
        24
    yangqi  
       Oct 26, 2013
    @sdzbzyc 这个问题我记得我也遇到过,不过不太记得怎么解决了。好像最后也是重装以后按着步骤来的。

    话说有可能是compile的时候参数弄错了
    sdzbzyc
        25
    sdzbzyc  
    OP
       Oct 26, 2013 via iPhone
    @11138 嗯 我再看一下。
    @yangqi 实在不行就重装吧
    panzhc
        26
    panzhc  
       Oct 26, 2013
    可以发my.cnf看下
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   836 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 21:35 · PVG 05:35 · LAX 14:35 · JFK 17:35
    ♥ Do have faith in what you're doing.