Tom*_*Tom 11 mysql ubuntu apparmor
我想在 mysql 启动时运行一个 SQL 脚本,但我无法在 Ubuntu 11.10 中运行它。
我在 mysql 配置文件中添加了一个“ init-file ”选项:
> sudo emacs -nw /etc/mysql/my.cnf
...
[mysqld]
init-file=/etc/mysql/mysqlinit.sql
...
Run Code Online (Sandbox Code Playgroud)
但是当我重新启动 mysql 时,它失败并显示“找不到文件”错误:
> 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
Run Code Online (Sandbox Code Playgroud)
但该文件肯定存在并且是可读的:
> ls -l /etc/mysql/mysqlinit.sql
-rwxr-xr-x 1 mysql mysql 30 2011-11-09 05:06 /etc/mysql/mysqlinit.sql
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?这是 Ubuntu 的怪癖还是我做了一些愚蠢的事情?
信息:
我正在运行 Ubuntu 11.10 和 MySQL 5.1。
> mysqld --version
mysqld Ver 5.1.58-1ubuntu1 for debian-linux-gnu on x86_64 ((Ubuntu))
Run Code Online (Sandbox Code Playgroud)
Tom*_*Tom 14
谢谢@quanta,问题确实是apparmor。
要解决此问题:
编辑 mysql apparmor 文件:
须藤 emacs -nw /etc/apparmor.d/usr.sbin.mysqld
使用 *.sql 扩展名包含 init 文件所在的文件夹:
...
/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,
}
Run Code Online (Sandbox Code Playgroud)
然后让 AppArmor 重新加载配置文件。
# sudo /etc/init.d/apparmor reload
Run Code Online (Sandbox Code Playgroud)
然后重新加载mysql:
sudo /etc/init.d/mysql restart
Run Code Online (Sandbox Code Playgroud)
现在 init 文件被执行。好极了!
| 归档时间: |
|
| 查看次数: |
11449 次 |
| 最近记录: |