แก้ไขแล้ว: mysqld_safe Directory '/var/run/mysqld' สำหรับไฟล์ซ็อกเก็ต UNIX ไม่มีอยู่

การปรับปรุงครั้งล่าสุด: 09/14/2023

เมื่อทำงานกับ 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 ของคุณได้อย่างง่ายดาย หากคุณพบข้อผิดพลาดที่คล้ายกันนี้อีกในอนาคต กระบวนการแก้ไขปัญหาจะมีความคล่องตัวมากขึ้นและไม่ยุ่งยากอีกต่อไป

กระทู้ที่เกี่ยวข้อง: