mysql的init文件configuration选项给文件未find错误

我希望有一个SQL脚本运行,每当mysql启动,但我不能得到它在Ubuntu 11.10的工作。

我在mysqlconfiguration文件中添加了一个“ init-file ”选项:

> sudo emacs -nw /etc/mysql/my.cnf ... [mysqld] init-file=/etc/mysql/mysqlinit.sql ... 

但是,当我重新启动MySQL,它会失败,并出现“ 文件未find ”的错误:

 > tail /var/log/mysql/error.log 111111 7:41:06 [ERROR] /usr/sbin/mysqld: File '/etc/mysql/mysqlinit.sql' not found (Errcode: 13) 111111 7:41:06 [ERROR] Aborting 

但是这个文件当然存在并且是可读的:

 > ls -l /etc/mysql/mysqlinit.sql -rwxr-xr-x 1 mysql mysql 30 2011-11-09 05:06 /etc/mysql/mysqlinit.sql 

任何想法如何解决这个问题? 这是一个Ubuntu怪异还是我做了一些愚蠢的事情?


信息:

我正在运行Ubuntu 11.10和MySQL 5.1。

 > mysqld --version mysqld Ver 5.1.58-1ubuntu1 for debian-linux-gnu on x86_64 ((Ubuntu)) 

谢谢@quanta,这个问题确实是一个概念。

要解决这个问题:

编辑mysql apparmor文件:

sudo emacs -nw /etc/apparmor.d/usr.sbin.mysqld

在你的init-file所在的文件夹中join* .sql扩展名:

 ... /usr/sbin/mysqld { /var/log/mysql.log rw, /var/log/mysql.err rw, ;/var/lib/mysql/ r, /var/lib/mysql/** rwk, /var/log/mysql/ r, /var/log/mysql/* rw, /{,var/}run/mysqld/mysqld.pid w, /{,var/}run/mysqld/mysqld.sock w, /sys/devices/system/cpu/ r, # I added to allow my init-file script to run /etc/mysql/*.sql r, } 

然后使AppArmor重新加载configuration文件。

 # sudo /etc/init.d/apparmor reload 

然后重新加载mysql:

 sudo /etc/init.d/mysql restart 

现在init-file被执行了。 好极了!