ตัวเลือก config mysql init-file ให้ไฟล์ไม่พบข้อผิดพลาด


11

ฉันต้องการให้สคริปต์ 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?
quanta

file /etc/mysql/mysqlinit.sqlให้ "/etc/mysql/mysqlinit.sql: ข้อความ ASCII โดยไม่มีตัวคั่นบรรทัด"
Tom

หากต้องการ จำกัด ปัญหาให้แคบลงเพียงลองย้ายไปยัง/tmpโฟลเดอร์เพื่อดูว่าเกิดอะไรขึ้น คุณใช้ AppArmor อยู่หรือไม่
quanta

ฉันลองใช้ไฟล์ init ใน/tmpแต่ก็ไม่มีโชค ใช่ฉันคิดว่า Ubuntu ใช้ AppArmor
Tom

1
ถ้าเป็นเช่นนั้นให้ลองหยุด AppArmor และดูว่าข้อผิดพลาดหายไปหรือไม่
quanta

คำตอบ:


14

ขอบคุณ @quanta ปัญหาที่แท้จริงคือความกลัว

ในการแก้ไขปัญหา:

แก้ไขไฟล์ apparmor mysql:

sudo emacs -nw /etc/apparmor.d/usr.sbin.mysqld

รวมโฟลเดอร์ที่ไฟล์ init ของคุณอยู่ด้วย * .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 โหลดโปรไฟล์อีกครั้ง

# sudo /etc/init.d/apparmor reload

จากนั้นโหลด mysql ใหม่:

sudo /etc/init.d/mysql restart

ตอนนี้ไฟล์ init จะถูกเรียกใช้งาน เย้!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.