Eu quero que um script SQL seja executado sempre que o mysql iniciar, mas não consigo fazê-lo funcionar no Ubuntu 11.10.
Eu adicionei uma opção " init-file " ao arquivo de configuração do mysql:
> sudo emacs -nw /etc/mysql/my.cnf
...
[mysqld]
init-file=/etc/mysql/mysqlinit.sql
...
Mas quando eu reinicio o mysql, ele falha com o erro " Arquivo não encontrado ":
> 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
Mas o arquivo certamente existe e é legível:
> ls -l /etc/mysql/mysqlinit.sql
-rwxr-xr-x 1 mysql mysql 30 2011-11-09 05:06 /etc/mysql/mysqlinit.sql
Alguma idéia de como resolver isso? Isso é uma estranheza do Ubuntu ou eu fiz algo idiota?
Informações:
Estou executando o Ubuntu 11.10 e o 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
dá "/etc/mysql/mysqlinit.sql: texto ASCII, sem terminadores de linha"/tmp
pasta para ver o que acontece. Você está executando o AppArmor?/tmp
mas sem sorte. Sim, acho que o Ubuntu usa o AppArmor.Respostas:
Obrigado @quanta, o problema era de fato aparmor.
Para corrigir o problema:
Edite o arquivo do mysql apparmor:
Inclua a pasta em que o seu arquivo init vive com a extensão * .sql:
E faça o AppArmor recarregar os perfis.
Então recarregue o mysql:
Agora o arquivo init é executado. Yay!
fonte