Я хочу, чтобы скрипт SQL запускался при запуске mysql, но я не могу заставить его работать в Ubuntu 11.10.
Я добавил опцию « init-file » в файл конфигурации mysql:
> sudo emacs -nw /etc/mysql/my.cnf
...
[mysqld]
init-file=/etc/mysql/mysqlinit.sql
...
Но когда я перезапускаю 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
Но файл, безусловно, существует и доступен для чтения:
> 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))
file /etc/mysql/mysqlinit.sql
?file /etc/mysql/mysqlinit.sql
дает "/etc/mysql/mysqlinit.sql: текст ASCII, без разделителей строк"/tmp
папку, чтобы увидеть, что происходит. Вы используете AppArmor?/tmp
но не повезло. Да, я думаю, что Ubuntu использует AppArmor.Ответы:
Спасибо @quanta, проблема была действительно apparmor.
Чтобы исправить проблему:
Отредактируйте файл mysql apparmor:
Включите папку, в которой находится ваш init-файл с расширением * .sql:
А затем заставьте AppArmor перезагрузить профили.
Затем перезагрузите MySQL:
Теперь init-файл исполняется. Ура!
источник