เมื่อทำงานกับ MySQL ปัญหาทั่วไปที่นักพัฒนามักพบคือข้อความแสดงข้อผิดพลาด “mysqld_safe Directory '/var/run/mysqld' สำหรับไฟล์ซ็อกเก็ต UNIX ไม่มีอยู่” ซึ่งอาจเป็นปัญหาได้ โดยเฉพาะอย่างยิ่งเมื่องานประจำของคุณอาศัยระบบจัดการฐานข้อมูลเชิงสัมพันธ์แบบโอเพ่นซอร์สที่ใช้กันอย่างแพร่หลาย โดยทั่วไปข้อผิดพลาดนี้บ่งชี้ว่ามีปัญหากับไดเร็กทอรีที่ MySQL เก็บไฟล์ซ็อกเก็ตไว้ ที่นี่เราจะเจาะลึกถึงวิธีการแก้ไขปัญหานี้ วิเคราะห์วิธีแก้ปัญหาทีละขั้นตอน และสำรวจฟังก์ชันและไลบรารีบางส่วนที่เข้ามามีบทบาท
ปัญหานี้เกิดขึ้นได้อย่างไร?ปัญหานี้เกิดขึ้นเมื่อเซิร์ฟเวอร์ MySQL หาไดเร็กทอรี /var/run/mysqld ไม่เจอ โดยทั่วไปแล้วนี่คือตำแหน่งที่ MySQL เก็บไฟล์ซ็อกเก็ต UNIX ซึ่งมีความสำคัญอย่างยิ่งสำหรับการเชื่อมต่อภายในเครื่อง หากไดเร็กทอรีนี้หายไปไม่ว่าด้วยเหตุผลใดก็ตาม MySQL จะไม่สามารถทำงานได้อย่างที่ควรจะเป็น
systemctl start mysql
ข้อผิดพลาดนี้เกิดขึ้นเมื่อคุณพยายามเริ่มเซิร์ฟเวอร์ MySQL โดยใช้คำสั่งข้างต้น สาเหตุเบื้องหลังปัญหานี้คือการไม่มีไดเร็กทอรี /var/run/mysqld
Solution
วิธีแก้ปัญหานี้ค่อนข้างตรงไปตรงมา สิ่งที่คุณต้องทำคือสร้างไดเร็กทอรีที่ MySQL ต้องการจัดเก็บไฟล์ซ็อกเก็ต คำสั่งต่อไปนี้จะทำอย่างนั้น:
mkdir -p /var/run/mysqld chown mysql:mysql /var/run/mysqld
บรรทัดแรกใช้คำสั่ง 'mkdir -p' เพื่อสร้างไดเร็กทอรี /var/run/mysqld ตัวเลือก '-p' บอกให้ระบบสร้างไดเร็กทอรีหลักตามต้องการ
บรรทัดที่สอง 'chown mysql:mysql /var/run/mysqld' เปลี่ยนเจ้าของและกลุ่มของไดเร็กทอรี /var/run/mysqld เป็น mysql ซึ่งเป็นผู้ใช้และกลุ่มที่เซิร์ฟเวอร์ MySQL ทำงาน
ทำความเข้าใจกับโค้ด SQL
เพื่อทำความเข้าใจและนำโซลูชันไปใช้ คุณต้องคุ้นเคยกับฟังก์ชันที่ใช้และวิธีโต้ตอบของฟังก์ชันเหล่านั้น เราจะอธิบายรายละเอียดเหล่านี้ที่นี่
- คำสั่ง: คำสั่งนี้ตามที่ระบุไว้ข้างต้นย่อมาจาก “make directory” มันถูกใช้เพื่อสร้างไดเร็กทอรี ตัวเลือก '-p' ในคำสั่งหมายความว่าจะสร้างไดเร็กทอรีหลักทั้งหมดตามต้องการ ตัวอย่างเช่น หากไม่มี '/var/run/' ก็จะถูกสร้างขึ้นเช่นกัน
- ชอง: คำสั่งนี้ย่อมาจาก "เปลี่ยนเจ้าของ" ใช้เพื่อเปลี่ยนเจ้าของและกลุ่มของไฟล์หรือไดเร็กทอรี 'mysql:mysql' หมายความว่าเซิร์ฟเวอร์ควรเปลี่ยนเจ้าของเป็นผู้ใช้ 'mysql' และกลุ่มเป็น 'mysql' สำหรับไดเร็กทอรี '/var/run/mysqld'
ไลบรารีและฟังก์ชันที่เกี่ยวข้อง
1. เซิร์ฟเวอร์ MySQL: เซิร์ฟเวอร์ MySQL เป็นศูนย์กลางของการสนทนานี้เนื่องจากปัญหาวนเวียนอยู่รอบๆ ใช้ไฟล์ซ็อกเก็ต UNIX ซึ่งจัดเก็บไว้ใน /var/run/mysqld เพื่อจัดการการเชื่อมต่อภายในเครื่อง
2. UNIX/LINUX: เรายังจัดการกับคำสั่ง UNIX ที่นี่ด้วย สิ่งเหล่านี้เป็นองค์ประกอบสำคัญของระบบ LINUX และช่วยในการสร้างไดเร็กทอรีและการกำหนดสิทธิ์บนเซิร์ฟเวอร์
ด้วยการทำความเข้าใจสาเหตุที่แท้จริงของข้อผิดพลาดนี้และคำสั่งที่ใช้ในการแก้ไข คุณสามารถรับประกันการทำงานที่ราบรื่นของเซิร์ฟเวอร์ MySQL ของคุณได้อย่างง่ายดาย หากคุณพบข้อผิดพลาดที่คล้ายกันนี้อีกในอนาคต กระบวนการแก้ไขปัญหาจะมีความคล่องตัวมากขึ้นและไม่ยุ่งยากอีกต่อไป
