33

Today I did a fresh install of ubuntu 12.04 and went about setting up my local development environment. I installed mysql and edited /etc/mysql/my.cnf to optimise InnoDB but when I try to restart mysql, it fails with a error:

[20:53][tom@Pochama:/var/www/website] (master) $ sudo service mysql restart
start: Job failed to start

The syslog reveals there is a problem with the init script:

> tail -f /var/log/syslog

Apr 28 21:17:46 Pochama kernel: [11840.884524] type=1400 audit(1335644266.033:184): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=760 comm="apparmor_parser"
Apr 28 21:17:47 Pochama kernel: [11842.603773] init: mysql main process (764) terminated with status 7
Apr 28 21:17:47 Pochama kernel: [11842.603841] init: mysql main process ended, respawning
Apr 28 21:17:48 Pochama kernel: [11842.932462] init: mysql post-start process (765) terminated with status 1
Apr 28 21:17:48 Pochama kernel: [11842.950393] type=1400 audit(1335644268.101:185): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=811 comm="apparmor_parser"
Apr 28 21:17:49 Pochama kernel: [11844.656598] init: mysql main process (815) terminated with status 7
Apr 28 21:17:49 Pochama kernel: [11844.656665] init: mysql main process ended, respawning
Apr 28 21:17:50 Pochama kernel: [11845.004435] init: mysql post-start process (816) terminated with status 1
Apr 28 21:17:50 Pochama kernel: [11845.021777] type=1400 audit(1335644270.173:186): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=865 comm="apparmor_parser"
Apr 28 21:17:51 Pochama kernel: [11846.721982] init: mysql main process (871) terminated with status 7
Apr 28 21:17:51 Pochama kernel: [11846.722001] init: mysql respawning too fast, stopped

Any ideas?


Things I tried already:

I googled and found a Ubuntu bug with apparmor (https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/970366), I changed apparmor from enforce mode to complain mode:

sudo apt-get install apparmor-utils
sudo aa-complain /usr/sbin/mysqld
sudo /etc/init.d/apparmor reload

but it didn't help. I still can't start mysql.

I also thought the issue may be because the InnoDB logfiles were a different size than mysql was expecting. I removed the innodb log files before restarting using: sudo mv /var/lib/mysql/ib_logfile* /tmp. No luck though.

Workaround: I re-installed 12.04, made sure not to touch /etc/mysql/my.cnf in any way. Mysql is working so I can get on with what I need to do. But I will need to edit it at some point - Hopefully I'll have figured out a solution, or this question will have been answered by that point...

Jorge Castro
  • 73,717
Tom
  • 5,077

18 Answers18

29

I finally figured out the issue. Basically, the definition of some parameters has been removed from the previous version of mysql and has been replaced with different names. To fix, in /etc/mysql/my.cnf, replace:

# Tom Added to ensure the server character set is set to utf8
default-character-set = utf8
default-collation     = utf8_general_ci

with:

# Tom Added to ensure the server character set is set to utf8
character_set_server  = utf8
collation_server      = utf8_general_ci

This is the associated launchpad bug report: https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/958120.

Or easily run:

# Miraz added dpkg-reconfigure
dpkg-reconfigure mysql-server-5.5

But make sure there's no old mysql version installation installed, if there was please remove:

# Miraz quick mysql package check
dpkg -l *mysql*
Tom
  • 5,077
10

Innodb has a default setting (innodb_buffer_pool_size) which is set to 128M - this may be too large for your server (especially if you're using a small Amazon EC2 AMI - which I was) The fix that worked for me was to add the following line to /etc/mysql/my.cnf

innodb_buffer_pool_size = 16M

I wrote about this fix over here http://www.mlynn.org/2012/07/mysql-5-5-on-ubuntu-12-04-job-failed-to-start

10

I had a similar problem. It was frustrating because I couldn't see any error logs indicating what the problem was.

In my case, the value I had set for innodb_buffer_pool_size was too large for the memory of the server.

I found this out by running mysqld directly as the mysql user.

# su mysql
# mysqld

This way you actually see the error output.

Joel
  • 201
3

I also had a similar problem. The items below say they have been removed from mysql server 5.5.
If you have them in your my.cnf, it won't start. Comment them out with #.
(Info derived from : http://dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html)

The options affected are shown in this list:

 --master-host
 --master-user
 --master-password
 --master-port
 --master-connect-retry
 --master-ssl
 --master-ssl-ca
 --master-ssl-capath
 --master-ssl-cert
 --master-ssl-cipher
 --master-ssl-key
belacqua
  • 23,540
3

It seems to boil down to errors in the MySQL configuration, located in /etc/mysql/my.cnf and files in /etc/mysql/conf.d/.

In my case it was a wrong bind-address value, because the IP address of my machine had changed and MySQL couldn't bind anymore. Feel free to rea more on this in this blog article.

gertvdijk
  • 69,427
boteeka
  • 61
2

A good way to debug the failures in the post-start process (/etc/init/mysql.conf) is to check the upstart logs:

sudo tail -f /var/log/upstart/mysql.log 

That gave me a socket error:

error: 'Can't connect to local MySQL server through socket

In my case it was caused by a missing user setting under the [mysqld] group in my.cnf

prusswan
  • 1,049
1

I had the same issue. It turned out to be the mysql my.cnf master slave replications. Check your /var/log/mysql/error.log.

I hope that's a little help. Check the mysql settings first before you waste two hours with apparmor which just works fine.

Eliah Kagan
  • 119,640
1

When I had a similar MySQL error ("Job failed to start") after upgrading from 11.10 to 12.04, comment #27 on https://bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.1/+bug/573318?comments=all worked perfectly for me. Quote:

The problem for me was that the file /etc/apparmor.d/local/usr.sbin.mysqld did not exist after the upgrade. I manually copied one from one of the empty ones (i.e. only had header comment) and then everything was good to go.

1

For me the solution was to remove the line ...

set-variable = max_connections=200

... which is MySQL 3.x syntax and needs to be changed to

max_connections=200
Jorge Castro
  • 73,717
Ken West
  • 11
  • 1
1

I had the same issues, for me the bind-address was set improperly in my /etc/mysql/my.cnf file. So it seems anything that isn't right in the my.cnf can cause this issue. I haven't found anything in the logs that indicated this as the issue.

CLo
  • 111
1

My problem was 0% of free space! Double check :-)

moamahi
  • 21
1

Check the /tmp permissions. I had this problem, after many time googleing and restarts, i found out that /tmp permissions was 755.

I change it to 777 and mysql start well.

shgnInc
  • 4,431
1

After an automatic update to mysqld-5.5.53 ubuntu 14.04.1, mysql would not start. These lines showed up in my syslog:

Oct 27 06:05:51 hostname kernel: [  593.168925] init: mysql post-start process (4997) terminated with status 1
Oct 27 06:05:51 hostname kernel: [  593.178241] type=1400 audit(1477562751.231:31): apparmor="STATUS" operation="profile_replace" profile="unconfined" name
Oct 27 06:05:51 hostname kernel: [  593.204392] init: mysql main process (5032) terminated with status 1
Oct 27 06:05:51 hostname kernel: [  593.204404] init: mysql respawning too fast, stopped

The problem was solved by creating this directory:

sudo mkdir /var/lib/mysql-files
sudo chmod 700 /var/lib/mysql-files
sudo chown mysql:mysql /var/lib/mysql-files
sudo /etc/init.d/mysql start
Yapsr
  • 11
0

Just updated MySQL and AppArmor version as suggested here to fix this problem on Ubuntu 12.04 running on Amazon ec2 instance. I still get the error a few time but MySQL restarts itself automatically.

Kazark
  • 698
0

I had the same error messages, but the cause was different. My InnoDB tables were corrupt, because the whole file system went into read-only mode. I fixed the corruption by adding the following line to /etc/mysql/my.cf

innodb_force_recovery = 1

I started MySQL:

sudo service mysql start

MySQL did start and I dumped/exported all tables. I changed the innodb_force_recovery to 0 (=default) and restarted MySQL:

sudo service mysql restart

I'm using Ubuntu 12.04 with MySQL 5.5. It took a long time before I found the problem and I hope I can help someone with this answer. See also http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html

Coanda
  • 232
0

In my case the problem was the /etc/mysql/my.cnf file permission.

I changed it for cenvenience but it caused erros like

kernel: [604528.290448] type=1400 audit(1424350956.727:193): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/sbin/mysqld" pid=15008 comm="apparmor_parser"

The my.cnf permission was 766 and I changed it to 744 and two of three errors went away. There is still one similar error message but it did not prevent mysql from starting.

Hope this helps...

0

In my case, I had a wrong bind-address declaration. I ran ifconfig to discover the EC2's private IP address and updated it in the /etc/mysql/my.cnf file.

Ralph
  • 111
0

In my case i found a permission problem on /tmp. I just setted the tmp's directory permission to 766 and restart mysql service. Fixed out.