Chcę mieć skrypt SQL uruchamiany przy każdym uruchomieniu mysql, ale nie mogę go uruchomić w Ubuntu 11.10.
Dodałem opcję „ init-file ” do pliku konfiguracyjnego mysql:
> sudo emacs -nw /etc/mysql/my.cnf
...
[mysqld]
init-file=/etc/mysql/mysqlinit.sql
...
Ale po ponownym uruchomieniu mysql kończy się niepowodzeniem z błędem „ Nie znaleziono pliku ”:
> 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
Ale plik z pewnością istnieje i można go odczytać:
> ls -l /etc/mysql/mysqlinit.sql
-rwxr-xr-x 1 mysql mysql 30 2011-11-09 05:06 /etc/mysql/mysqlinit.sql
Wszelkie pomysły, jak to rozwiązać? Czy to dziwność Ubuntu, czy zrobiłem coś głupiego?
Informacje:
Używam Ubuntu 11.10 i 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
daje „/etc/mysql/mysqlinit.sql: tekst ASCII, bez terminatorów linii”/tmp
folderu, aby zobaczyć, co się stanie. Czy korzystasz z AppArmor?/tmp
ale bez powodzenia. Tak, myślę, że Ubuntu używa AppArmor.Odpowiedzi:
Dzięki @quanta, problem był naprawdę przerażający.
Aby rozwiązać problem:
Edytuj plik aplikacji mysql:
Dołącz folder, w którym znajduje się plik init, z rozszerzeniem * .sql:
A następnie spraw, aby AppArmor ponownie załadował profile.
Następnie ponownie załaduj mysql:
Teraz plik inicjujący zostaje wykonany. Tak!
źródło