我的想法是利用 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
这是一个过时的设置。一旦重命名,一切又恢复正常。
典型的错误就是只见树木不见森林。