Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Changes to my.cnf don't take effect (Ubuntu 16.04, mysql 5.6)

Changes I make to my.cnf don't seem to have any effect on the mysql environment. Here's a summary of what's happened...

I installed mysql 5.7 on Ubuntu 16.04 but then realized I needed to downgrade to mysql 5.6 due to incompatibility issues.

I apt purged the related applications and then removed any remaining directories such at /etc/mysql and /var/lib/mysql

I then installed mysql-5.6 (server and client) and related packages.

I was able to load one database from a dump from a server also running mysql 5.6 but when I tried to load a second database from a second dump from that same server, I got this error:

ERROR 2006 (HY000) at line 1721: MySQL server has gone away

When I Googled that, I saw results saying to set various options via the my.cnf file.

When I run...

updatedb && locate my.cnf

...I only see four results which are all links back to the same file: /etc/mysql/my.cnf.fallback. E.g. /etc/mysql/my.cnf.fallback == /etc/mysql/my.cnf

There are no .my.cnf files in either the root home directory or my user's home directory. I put a typo into the my.cnf file and reloaded mysql just to see the expected error and know the file was being loaded. I then removed the erroneous code and added the following:

[mysqld]
max_allowed_packet=1073741824

I then reloaded mysql by running in various ways:

service mysql restart

or

service mysql stop
service mysql start

or

/etc/init.d/mysql stop
/etc/init.d/mysql start

I then kept getting this default value indicating that it was not getting set from my.cnf:

mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+---------+
| Variable_name      | Value   |
+--------------------+---------+
| max_allowed_packet | 4194304 |
+--------------------+---------+

If I do this:

mysql> SET GLOBAL max_allowed_packet=1073741824;

and log out and back into the mysql client, I see the correct value:

mysql> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+------------+
| Variable_name      | Value      |
+--------------------+------------+
| max_allowed_packet | 1073741824 |
+--------------------+------------+

But of course, if I restart the mysql server, the value reverts.

I've exhausted my search ability. What can I possibly be doing wrong?

like image 232
Ron Collins Avatar asked Nov 29 '22 14:11

Ron Collins


1 Answers

The config files are fine. The root cause is a bug in the MySQL 5.6 packaging for Ubuntu 16.04.

If you check your /var/log/syslog you'll probably see a line like this:

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

A security tool called AppArmor is denying access to a symlinked file (/etc/mysql/my.cnf.fallback).

Try this workaround, which will allow symlinks to be read by mysqld.

echo '/etc/mysql/** lr,' >> /etc/apparmor.d/local/usr.sbin.mysqld
systemctl reload apparmor

Now mysqld should see your custom config.

This bug appears to be fixed in the MySQL 5.7 Ubuntu package.

like image 107
Keeth Avatar answered Dec 06 '22 04:12

Keeth