Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
更改my.cnf don';t生效(Ubuntu 16.04、mysql 5.6)_Mysql_Mysql 5.6_Ubuntu 16.04_My.cnf - Fatal编程技术网

更改my.cnf don';t生效(Ubuntu 16.04、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

我对my.cnf所做的更改似乎对mysql环境没有任何影响。这是所发生事情的摘要

我在Ubuntu 16.04上安装了mysql 5.7,但后来意识到由于不兼容问题,我需要降级到mysql 5.6

我清除了相关的应用程序,然后删除了所有剩余的目录,如/etc/mysql和/var/lib/mysql

然后我安装了mysql-5.6(服务器和客户端)和相关软件包

我可以从运行mysql 5.6的服务器的转储中加载一个数据库,但当我尝试从同一服务器的第二个转储中加载第二个数据库时,出现以下错误:

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