在启动mysql的时候,可能会遇到各种各样的问题,然而这时候还找不到错误日志,只是在屏幕上显示:
Starting MySQL. ERROR! Manager of pid-file quit without updating file.
那么我们就来看看如何解决这些问题。
在没有错误日志的情况下,很难排查错误,因此我们可以使用另一种方式来使其生成错误信息:
/usr/local/mysql/bin/mysqld 或者 /usr/local/mysql/bin/mysqld_safe
这样就显示会在数据目录下生成一个.rr的文件,这里面就包含我们遇到的错误信息。
那么错误有哪些呢,笔者归类了一下这几天实验中遇到的,与大家分享:
1、/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)
关于这个错误,其实就是权限的问题,我们知道,mysql是不方便直接用root用户来启动的(当然啦,如
果你非要用的话也可以,但是不安全,这里不加赘述),因此我们需要创建一个叫mysql的用户,然后把
安装目录和数据目录的所属主和所属组全部改成mysql,这样就解决了上面的错误。但是注意,如果在启
动过程还是不顺利,遇到其它各种错误的话,这两个目录的权限可能又会发生更改,所以我们可能要再
次去修改权限。
2、mysqld: Table 'mysql.plugin' doesn't exist
如果日志里出现这样的错误,说明我们需要重新初始化一下数据库,如果没有初始化数据库的话,就不
能生成守护进程。
初始化数据库命令:
/usr/local/mysql/scripts/mysql_install_db --user=mysql basedir=/usr/local/mysql datadir=/data/mysql
注意,这里进行初始化的时候一定加上安装目录和数据目录的路径,因为这样的错误提示是说启动的时
候找不到内置数据库,而指定数据库目录之后再次进行初始化就可以解决这个问题了。
3、ERROR: 1136 Column count doesn't match value count at row 1
这是因为写的SQL语句里列的数目和后面的值的数目不一致,比如我们插入数据操作:insert into 表名
(field1,field2,field3) values('a','b')这样前面的是三列,后面却只有二个值,这就会出现这个
错误。
但是这个错误与启动mysql服务貌似并不影响,如果重新安装后启动不了,出现这个错误的话,说明原有
的安装信息没有删除干净。
4、[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] /usr/local/mysql/bin/mysqld: unknown variable 'performance_schema=0'
如果遇到了这个错误,说明安装的mysql不支持,或者没有innodb引擎,但是配置文件/etc/my.cnf中是
使用innodb来工作的,这就出现了错误。
解决方法:
a、更改配置文件,将与innodb有关的配置信息删除
b、动态加载innodb引擎:
先修改配置文件使mysql可以正常启动,删除数据目录下的ibdata1,ib_datafile0,ib_datafile1文件,
启动服务之后登录到mysql中,使用命令 INSTALL PLUGIN InnoDB SONAME 'ha_innodb_plugin.so'; 这
样就可以成功加载innodb引擎了(一定要先删除数据目录的那几个文件,不然加载innodb会出错)。
5、'--skip-locking' is deprecated and will be removed in a future release. Please use '--
skip-external-locking' instead.
遇到这个错误,我们将配置文件/etc/my.cnf中的skip-locking字段改为skip-external-locking字段即
可解决。