ฉันติดตั้ง MySQL server 5.5 บน Ubuntu 12.04 แล้ว ฉันพยายามเริ่มต้นเซิร์ฟเวอร์ MySQL บนไฟล์ถุงเท้าอื่น โดยค่าเริ่มต้น MySQL ทำงานบน /var/run/mysqld/mysqld.sock
ฉันพยายามเรียกใช้เซิร์ฟเวอร์เดียวกันใน /var/run/mysqld/mysqld1.sock
สำหรับเรื่องนี้ฉันได้ทำการเปลี่ยนแปลงต่อไปนี้:
- เปลี่ยนเป็น /etc/mysql/my.cnf
[ลูกค้า]
พอร์ต = 3306
socket = /var/run/mysqld/mysqld1.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld1.sock
ดี = 0
[mysqld]
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
** ซ็อกเก็ต = /var/run/mysqld/mysqld1.sock**
พอร์ต = 3306
basedir = / usr
datadir = / var / lib / mysql
tmpdir = / tmp
lc-messages-dir = / usr / share / mysql
ฉันยังเพิ่มบรรทัดต่อไปนี้ใน /etc/apparmor.d/usr/sbin.mysqld
/var/run/mysqld/mysqld1.sock w,
/var/run/mysqld/mysqlduty1-9 เหมือน.sock w,
ฉันยังเปลี่ยนความเป็นเจ้าของสำหรับไดเรกทอรี / var / run / mysqld เป็นผู้ใช้ mysql
ls -lA / var / run / | grep mysqld
drwxrwxrwx 2 mysql mysql 40 Dec 31 17:24 mysqld
อย่างไรก็ตามเมื่อฉันพยายามที่จะเริ่มต้นเซิร์ฟเวอร์ MySQL ฉันได้รับข้อผิดพลาดดังต่อไปนี้ (ในฐานะผู้ใช้รูท)
$ mysqld --user = mysql --verbose
121231 18:40:56 [หมายเหตุ] ปลั๊กอิน 'FEDERATED' ถูกปิดใช้งาน
121231 18:40:56 InnoDB: ฮีปหน่วยความจำ InnoDB ถูกปิดใช้งาน
121231 18:40:56 InnoDB: Mutexes และ rw_locks ใช้ GCC อะตอมในตัว
121231 18:40:56 InnoDB: ตารางที่บีบอัดใช้ zlib 1.2.3.4
121231 18:40:56 InnoDB: การเตรียมใช้งานบัฟเฟอร์พูลขนาด = 128.0M
121231 18:40:56 InnoDB: การเริ่มต้นบัฟเฟอร์พูลเสร็จสมบูรณ์
121231 18:40:56 InnoDB: รูปแบบไฟล์ที่รองรับสูงสุดคือ Barracuda
121231 18:40:57 InnoDB: รอให้เธรดพื้นหลังเริ่มต้น
121231 18:40:58 InnoDB: 1.1.8 เริ่ม; หมายเลขลำดับการบันทึก 1595685
121231 18:40:58 [หมายเหตุ] ชื่อโฮสต์เซิร์ฟเวอร์ (ที่อยู่ผูก): '127.0.0.1'; พอร์ต: 3306
121231 18:40:58 [หมายเหตุ] - '127.0.0.1' แก้ไขเป็น '127.0.0.1';
121231 18:40:58 [หมายเหตุ] ซ็อกเก็ตเซิร์ฟเวอร์ที่สร้างบน IP: '127.0.0.1'
** `121231 18:40:58 [ข้อผิดพลาด] ไม่สามารถเริ่มเซิร์ฟเวอร์: ผูกกับซ็อกเก็ตยูนิกซ์: การอนุญาตถูกปฏิเสธ` **
121231 18:40:58 [ข้อผิดพลาด] คุณมีเซิร์ฟเวอร์ mysqld อื่นที่ทำงานบนซ็อกเก็ตแล้ว
/var/run/mysqld/mysqld1.sock?
121231 18:40:58 [ข้อผิดพลาด] การยกเลิก **
121231 18:40:58 InnoDB: เริ่มปิด ...
121231 18:40:58 InnoDB: การปิดระบบเสร็จสิ้น; หมายเลขลำดับการบันทึก 1595685
121231 18:40:58 [หมายเหตุ] mysqld: ปิดการทำงานเสร็จสมบูรณ์
ถ้าฉันเริ่มต้นเซิร์ฟเวอร์ด้วยไฟล์ซ็อกเก็ตเริ่มต้นฉันสามารถเริ่มต้นเซิร์ฟเวอร์ได้ ฉัน googled เกี่ยวกับปัญหานี้ แต่พบวิธีแก้ปัญหาที่แนะนำให้เป็นปัญหาสิทธิ์เท่านั้น อย่างไรก็ตามการอนุญาตดูเหมือนดี บางคนแนะนำว่า AppArmor อาจเป็นสาเหตุ แต่ฉันได้ตรวจสอบแล้วเช่นกัน - มีการวางข้อมูลโค้ดด้านบน
บางคนสามารถให้เบาะแสได้บ้าง
[แก้ไข]
/var/log/syslogผมเห็นการส่งออกต่อไปนี้ใน
2 มกราคม 12:09:34 praveshp-lt mysqld: 130102 12:09:34 [หมายเหตุ] ปลั๊กอิน 'FEDERATED' ถูกปิดใช้งาน 2 มกราคม 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: ฮีปหน่วยความจำ InnoDB ถูกปิดใช้งาน 2 มกราคม 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: Mutexes และ rw_locks ใช้ GCC atomic builtins 2 มกราคม 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: ตารางที่บีบอัดใช้ zlib 1.2.3.4 2 มกราคม 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: การเตรียมใช้งานบัฟเฟอร์พูลขนาด = 128.0M 2 มกราคม 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: การเริ่มต้นของบัฟเฟอร์พูลเสร็จสมบูรณ์ 2 มกราคม 12:09:34 praveshp-lt mysqld: 130102 12:09:34 InnoDB: รูปแบบไฟล์ที่รองรับสูงสุดคือ Barracuda 2 มกราคม 12:09:35 praveshp-lt mysqld: 130102 12:09:35 InnoDB: รอให้เธรดพื้นหลังเริ่มต้น 2 มกราคม 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: 1.1.8 เริ่ม; หมายเลขลำดับการบันทึก 1595685 2 มกราคม 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [หมายเหตุ] ชื่อโฮสต์เซิร์ฟเวอร์ (ผูกที่อยู่): '127.0.0.1'; พอร์ต: 3307 2 มกราคม 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [หมายเหตุ] - '127.0.0.1' เปลี่ยนเป็น '127.0.0.1'; 2 มกราคม 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [หมายเหตุ] ซ็อกเก็ตเซิร์ฟเวอร์ที่สร้างบน IP: '127.0.0.1' 2 มกราคม 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ข้อผิดพลาด] ไม่สามารถเริ่มเซิร์ฟเวอร์: ผูกกับซ็อกเก็ตยูนิกซ์: ปฏิเสธการอนุญาต 2 มกราคม 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ข้อผิดพลาด] คุณมีเซิร์ฟเวอร์ mysqld ตัวอื่นที่ทำงานบนซ็อกเก็ตอยู่แล้ว: /var/run/mysqld/mysqld1.sock? 2 มกราคม 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [ข้อผิดพลาด] ยกเลิก 2 มกราคม 12:09:36 praveshp-lt mysqld: 2 มกราคม 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: เริ่มปิด ... ม.ค. 2 12:09:36 เคอร์เนล praveshp-lt: [7060.098580] type = 1,600 audit (1357108776.036: 33): apparmor = "DENIED" การดำเนินการ = "mknod" parent = 6702 โปรไฟล์ = "/ usr / sbin / mysqld" "/run/mysqld/mysqld1.sock" pid = 7039 comm = "mysqld" ร้องขอ_mask = "c" ปฏิเสธ _mask = "c" fsuid = 116 ouid = 116 2 มกราคม 12:09:36 praveshp-lt mysqld: 130102 12:09:36 InnoDB: ปิดการทำงานแล้ว; หมายเลขลำดับการบันทึก 1595685 2 มกราคม 12:09:36 praveshp-lt mysqld: 130102 12:09:36 [หมายเหตุ] / usr / sbin / mysqld: ปิดเครื่องเสร็จสมบูรณ์
มีข้อความระบุว่าการอนุญาตถูกปฏิเสธ แต่ดูเหมือนว่าฉันได้กำหนดสิทธิ์ที่ถูกต้องแล้ว
/etc/apparmor.d/usr.sbin.mysqldมีการเปรียบเทียบระหว่างรุ่นเก่าและใหม่ที่นี่: bugs.launchpad.net/ubuntu/+source/mysql-5.1/+bug/876268/…
/usr/local/mysql/tmpต้องมีอย่างน้อย 775 2. การอนุญาตสำหรับไดเรกทอรีฐานข้อมูล mysql ใน/var/lib/โฟลเดอร์ควรเป็นmysql:root(chown mysql:root mysql)