2

I am trying to set up multiple instances of MySQL on an Ubuntu dev machine and running into AppArmor problems.

I get this error in the syslogs:

kernel: [227631.776360] type=1400 audit(1329786835.208:146): apparmor="DENIED" 
    operation="mknod" parent=7957 profile="/usr/sbin/mysqld" 
    name="/run/mysqld/mysqld-5-5-20.sock" pid=8066 comm="mysqld" 
    requested_mask="c" denied_mask="c" fsuid=114 ouid=114

mysqld_safe: mysqld from pid 
    file /usr/local/mysql-5.5.20/data/naveen-desktop-ubuntu.pid ended 

I checked threads here that suggest to use mysql_multi - but I do not know if mysql_multi allows instances of servers with different versions to be run.

I already have mysql-5.1 running and want to install mysql-5.5.

I know there has to be something wrong the way I have configured AppArmor - but no help from Google!

Here are details and what I have done so far:

  • OS : Ubuntu 11.10 desktop 32 bit
  • MySQL installed: default Ubuntu package 5.1.58-1ubuntu1
  • Trying to install: mysql-server 5.5.20
  • running all commands as root

To keep most of the new installation files separately into a single folder (/usr/local/mysql-5.5.50) I created 4 new directories under the main mysql-5.5.50

  • source: downloaded and unzipped MySQL files
  • data : to hold data (owned by MySQL)
  • log : for all log files
  • tmp : for tmp files

user=mysql has write access to the entire top folder mysql-5.5.50 created new my.cnf file in the same dir with these details:

[client]
port        = 3307
socket      = /var/run/mysqld/mysqld-5-5-20.sock

[mysqld_safe]
socket      = /var/run/mysqld/mysqld-5-5-20.sock
nice        = 0

[mysqld]
user        = mysql
socket      = /var/run/mysqld/mysqld-5-5-20.sock
port        = 3307
basedir     = /usr
datadir     = /usr/local/mysql-5.5.20/data
tmpdir      = /usr/local/mysql-5.5.20/tmp

log_error   = /usr/local/mysql-5.5.20/log/error.log

AppArmor details:

/etc/apparmor.d/usr.sbin.mysqld has the line #include at the end.

I added below lines to local/usr.sbin.mysqld:

/usr/local/mysql-5.5.20/* r,    
/usr/local/mysql-5.5.20/** rwk,
/{,var/}run/mysqld/mysql-5.5.20.pid w,
/{,var/}run/mysqld/mysql-5.5.20.sock w,

I've restarted AppArmor with /etc/init.d/apparmor restart.

MySQL install:

mysql_install_db --user=mysql --datadir=/usr/local/mysql-5.5.20/data/

This command completed with PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! and I can see that /data now has files.

Start MySQL

/usr/bin/mysqld_safe --defaults-file=/usr/local/mysql-5.5.20/my.cnf 

Now I get the error in the syslog.

What am i doing wrong?

Hannah Vernon
  • 70,041
  • 22
  • 171
  • 315
itz_nsn
  • 796
  • 1
  • 6
  • 7

1 Answers1

1

I ran into apparmor headaches getting multiple instances going on ubuntu myself. Your configs look legit but I'm not super familiar w/ apparmor to spot a subtle problem if one lied there. In my case I was just running multiple copies of the same binaries w/ different cnfs

Your initial error cited

name="/run/mysqld/mysqld-5-5-20.sock"

It seems maybe there's a config option that didn't come through in what you pasted that's looking to work with /run (instead of /var/run) ?

atxdba
  • 5,273
  • 5
  • 40
  • 60
  • hey thanks for the reply - i copied the apparmor rules from the default usr.sbin.mysqld - the default one has the below line /{,var/}run/mysqld/mysqld.sock w, i am searching all around for some apparmor tutorials and explanations - but cannot find any i also came across "mysql sandbox" mentioned here http://dba.stackexchange.com/questions/6002/trying-to-get-multiple-mysql-instances-running-on-ubuntu-dev-box - briefly read through and it seems as if it allows multiple server instances with different server versions but i would like to know how apparmor interacts with all this – itz_nsn Feb 21 '12 at 16:24