我希望有一个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被执行了。 好极了!