更改my.cnf don';t生效(Ubuntu 16.04、mysql 5.6)
我对my.cnf所做的更改似乎对mysql环境没有任何影响。这是所发生事情的摘要 我在Ubuntu 16.04上安装了mysql 5.7,但后来意识到由于不兼容问题,我需要降级到mysql 5.6 我清除了相关的应用程序,然后删除了所有剩余的目录,如/etc/mysql和/var/lib/mysql 然后我安装了mysql-5.6(服务器和客户端)和相关软件包 我可以从运行mysql 5.6的服务器的转储中加载一个数据库,但当我尝试从同一服务器的第二个转储中加载第二个数据库时,出现以下错误:更改my.cnf don';t生效(Ubuntu 16.04、mysql 5.6),mysql,mysql-5.6,ubuntu-16.04,my.cnf,Mysql,Mysql 5.6,Ubuntu 16.04,My.cnf,我对my.cnf所做的更改似乎对mysql环境没有任何影响。这是所发生事情的摘要 我在Ubuntu 16.04上安装了mysql 5.7,但后来意识到由于不兼容问题,我需要降级到mysql 5.6 我清除了相关的应用程序,然后删除了所有剩余的目录,如/etc/mysql和/var/lib/mysql 然后我安装了mysql-5.6(服务器和客户端)和相关软件包 我可以从运行mysql 5.6的服务器的转储中加载一个数据库,但当我尝试从同一服务器的第二个转储中加载第二个数据库时,出现以下错误: E
ERROR 2006 (HY000) at line 1721: MySQL server has gone away
当我在谷歌上搜索时,我看到的结果是通过my.cnf文件设置各种选项
当我跑的时候
updatedb && locate my.cnf
…我只看到四个结果,它们都链接回同一个文件:/etc/mysql/my.cnf.fallback。例如/etc/mysql/my.cnf.fallback==/etc/mysql/my.cnf
根主目录或我的用户主目录中都没有.my.cnf文件。我在my.cnf文件中输入了一个拼写错误,然后重新加载了mysql,只是为了看到预期的错误并知道文件正在加载。然后,我删除了错误代码并添加了以下内容:
[mysqld]
max_allowed_packet=1073741824
然后,我通过各种方式重新加载mysql:
service mysql restart
或
或
然后,我不断得到这个默认值,表明它不是从my.cnf设置的:
mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+---------+
| Variable_name | Value |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+
如果我这样做:
mysql> SET GLOBAL max_allowed_packet=1073741824;
然后注销并返回mysql客户端,我看到了正确的值:
mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+------------+
| Variable_name | Value |
+--------------------+------------+
| max_allowed_packet | 1073741824 |
+--------------------+------------+
当然,如果我重新启动mysql服务器,该值就会恢复
我已经用尽了我的搜索能力。我可能做错了什么?显然my.cnf.fallback不是正确的配置文件 如果尝试此命令,您可以获得可能的my.cnf位置的输出:
$ which mysqld
/usr/sbin/mysqld
$ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
Default options are read from the following files in the given order:
/etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf
这意味着mysql将在这些位置检查my.cnf文件。只需将/etc/mysql/my.cnf.fallback
重命名为/etc/mysql/my.cnf
:
mv /etc/mysql/my.cnf.fallback /etc/mysql/my.cnf
配置文件很好。根本原因是Ubuntu 16.04的MySQL 5.6包中有一个bug 如果您检查/var/log/syslog,您可能会看到这样一行:
Sep 15 18:56:09 ip-172-31-18-162 kernel: [ 383.840275] audit: type=1400 audit(1505501769.234:50): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/my.cnf.fallback" pid=25701 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
名为AppArmor的安全工具拒绝访问符号链接文件(/etc/mysql/my.cnf.fallback)
尝试此解决方法,它将允许mysqld读取符号链接
echo '/etc/mysql/** lr,' >> /etc/apparmor.d/local/usr.sbin.mysqld
systemctl reload apparmor
现在mysqld应该可以看到您的自定义配置了
这个错误在MySQL 5.7 Ubuntu包中似乎已经修复。我按照你的建议做了,并且成功了。谢谢我仍然感到困惑,因为/etc/mysql/my.cnf只是指向/etc/alternations/my.cnf的链接,而/etc/mysql/my.cnf.fallback是指向/etc/mysql/my.cnf.fallback的链接,所以我想它会读取它,而且正如我提到的,如果我在回退文件中放入一个随机字符串,mysql会在重启时抱怨,但我猜mysql就是无法跟踪多个链接?奇怪。再次感谢!哇,这个问题一直困扰着我,终于解决了。非常感谢!!!这对我不起作用。仍然无法更改此版本mysql和ubuntu的配置值。Spooky在/etc/apparmor.d/usr.sbin.mysqld的末尾,我可以看到注释:#如果不起作用,请尝试取消注释这一行,或者直接在mooreds处修改/etc/apparmor.d/usr.sbin.mysqld
Sep 15 18:56:09 ip-172-31-18-162 kernel: [ 383.840275] audit: type=1400 audit(1505501769.234:50): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/etc/mysql/my.cnf.fallback" pid=25701 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
echo '/etc/mysql/** lr,' >> /etc/apparmor.d/local/usr.sbin.mysqld
systemctl reload apparmor