Mysql 无法启动,或者客户端显示错误“在配置文件中找到没有前面组的选项”

Mysql 无法启动,或者客户端显示错误“在配置文件中找到没有前面组的选项”

我的想法是利用 Mysql 服务器具有并包含的配置目录(通过!includedir /etc/mysql/conf.d/末尾的指令/etc/mysql/my.cnf)来定制其配置:

/etc/mysql/conf.d

因此我创建了一个名为的配置文件/etc/mysql/conf.d/innodb.cnf

现在,当我通过显示版本时,$ mysql --version看到以下错误:

error: Found option without preceding group in config file: /etc/mysql/conf.d/innodb.cnf at line: 3

确实如此,该文件的第一行没有这样的组。我评论了它故意地下面是前三行:

$ head -n 3 /etc/mysql/conf.d/innodb.cnf
# [mysqld]
# my settings
innodb_read_io_threads=4

如果我愿意不是注释该组,然后service mysql start在命令行上使用将使 mysql 陷入无限的启动循环,它会经常重试启动 mysql 守护进程,然后必然会失败,并再次重试,直到我再次注释掉该组。

所以现在我陷入了一个矛盾的境地。我可以

  • 要么:保留原样的文件(注释掉该组),然后查看错误

  • 或者:没有收到错误但无法启动 mysql

现在我正在寻找如何处理这种情况的方案。

我正在使用带有 Kubuntu 桌面和 Mysql 5.5 的 Ubuntu 14.04。

答案1

就我而言,我使用的是 Ubuntu 16.04,它有 !include 外部文件,如下所示

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
innodb_buffer_pool_size = 20M

我刚刚在为我的 Wordpress 新安装添加的新行之前包含了 [mysqld]

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
[mysqld]
innodb_buffer_pool_size = 20M

答案2

问题在于配置文件包含一个阻止 mysql 启动的指令。只要它出错(没有组),它就不会被加载,这样错误就不会出现,服务器就可以无错误地启动。

我通过启动然后停止 mysql 服务来解决这个问题,在文件顶部正确写上组,然后查看错误日志来发现问题:

$ sudo tail -f /var/log/mysql/error.log

我遇到了类似这样的错误

2016-07-11 11:59:22 17164 [ERROR] /usr/sbin/mysqld: unknown variable 'table_cache=2048'
2016-07-11 11:59:22 17164 [ERROR] Aborting

这是一个过时的设置。一旦重命名,一切又恢复正常。

典型的错误就是只见树木不见森林。

参考:

相关内容