ข้อผิดพลาด 1045 (28000) การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ root localhost (แก้ไขแล้ว)

เผยแพร่แล้ว: 2023-03-14

“ข้อผิดพลาด 1045 (28000) การเข้าถึงถูกปฏิเสธสำหรับผู้ใช้ root localhost” เป็นข้อผิดพลาดที่พบบ่อยเมื่อพยายามเข้าถึง MySQL ผ่าน WordPress CMS อย่างไรก็ตาม ข้อผิดพลาดนี้อาจเกิดขึ้นได้ในสถานการณ์อื่นๆ

ข้อผิดพลาดที่คุณพบแสดงว่าผู้ใช้ "รูท" ไม่มีสิทธิ์ที่จำเป็นในการเข้าถึงฐานข้อมูลจาก localhost สาเหตุเบื้องหลังปัญหานี้อาจเกิดขึ้นได้จากหลายสาเหตุ รวมถึงรหัสผ่านไม่ถูกต้อง ชื่อผู้ใช้ไม่ถูกต้อง หรือการอนุญาตที่ไม่เพียงพอแก่ผู้ใช้

ต่อไปนี้คือขั้นตอนบางส่วนที่คุณสามารถทำได้เพื่อแก้ไขข้อผิดพลาดนี้

1. ตรวจสอบชื่อผู้ใช้และรหัสผ่าน

ตรวจสอบให้แน่ใจว่าคุณใช้ชื่อผู้ใช้และรหัสผ่านที่ถูกต้อง ชื่อผู้ใช้ควรเป็น "รูท" และรหัสผ่านควรเป็นชื่อที่คุณตั้งไว้ในระหว่างขั้นตอนการติดตั้ง

ในกรณีที่คุณใช้ WordPress คุณต้องตรวจสอบไฟล์ wp-config.php ไฟล์สามารถพบได้ในโฟลเดอร์หลักของ WordPress

wp-config.php

หลังจากเปิดไฟล์และพยายามแก้ไข (Visual Studio Code) คุณจะมีหน้าจอนี้:

แก้ไขชื่อผู้ใช้และรหัสผ่าน wp-config.php ของฐานข้อมูล

ตรวจสอบ DB_USER และ DB_PASSWORD ว่ามีค่าที่ถูกต้องหรือไม่

 /** Database username */ define( 'DB_USER', 'root' );
 /** Database password */ define( 'DB_PASSWORD', 'root' );

หากคุณไม่ทราบว่าชื่อผู้ใช้และรหัสผ่านของคุณสำหรับ DB คืออะไร ให้เข้าไปที่ cPanel > Database > Mysql แล้วตรวจสอบ

วิธีเข้าถึงฐานข้อมูล mysql ด้วย cpanel

หากต้องการเปลี่ยนรหัสผ่านของฐานข้อมูล WordPress โปรดทำตามบทช่วยสอน: เปลี่ยนรหัสผ่าน WordPress ใน PHPMyAdmin

2. ตรวจสอบว่าผู้ใช้มีสิทธิ์ที่จำเป็นหรือไม่

ตรวจสอบว่าผู้ใช้ "รูท" มีสิทธิ์ที่จำเป็นในการเข้าถึงฐานข้อมูลหรือไม่

ขั้นตอนที่ 1: ขั้นแรก คุณต้องเปิดเทอร์มินัลแล้วเขียน ssh [ป้องกันอีเมล]

 ssh [email protected]

ขั้นตอนที่ 2: หลังจากเข้าสู่ระบบสำเร็จให้จดคำสั่งนี้

 mysql -uroot -p

ขั้นตอนที่ 3: หลังจากเพิ่มรหัสผ่านของคุณ คุณสามารถเริ่มเพิ่มคำสั่งของคุณจากพรอมต์ mysql

ขั้นตอนที่ 4: คุณสามารถใช้คำสั่งต่อไปนี้เพื่อตรวจสอบสิทธิ์:

 SHOW GRANTS FOR 'root'@'localhost';

นี่จะแสดงรายการสิทธิพิเศษที่ผู้ใช้ "root" มีสำหรับเซิร์ฟเวอร์ "localhost" หากผู้ใช้ไม่มีสิทธิ์ที่จำเป็น คุณสามารถให้สิทธิ์ได้โดยใช้คำสั่งต่อไปนี้:

 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'password';

หมายเหตุ: แทนที่ 'รหัสผ่าน' ด้วยรหัสผ่านที่คุณต้องการใช้

ในการตรวจสอบว่าผู้ใช้มีสิทธิ์ที่จำเป็นโดยใช้ phpMyAdmin หรือไม่ ให้ทำตามขั้นตอนเหล่านี้:

  1. เข้าสู่ระบบบัญชี phpMyAdmin ของคุณ
  2. คลิกที่แท็บ "บัญชีผู้ใช้"
  3. เลือกบนรูทผู้ใช้ (หรือที่คุณต้องการเปลี่ยนรหัสผ่าน)
  4. คลิกที่ลิงค์แก้ไขสิทธิ์
  5. คุณสามารถดูรายการสิทธิพิเศษที่ผู้ใช้ได้รับได้ที่นี่
  6. ตรวจสอบให้แน่ใจว่าผู้ใช้ได้รับสิทธิ์ที่จำเป็นในการเข้าถึงฐานข้อมูล
  7. หากผู้ใช้ไม่มีสิทธิ์ที่จำเป็น คุณสามารถให้สิทธิ์ได้โดยเลือกช่องทำเครื่องหมายที่เกี่ยวข้องแล้วคลิกปุ่ม "ไป"
  8. เมื่อคุณให้สิทธิ์ที่จำเป็นแล้ว ให้ลองเข้าถึงฐานข้อมูลอีกครั้งเพื่อดูว่าปัญหาได้รับการแก้ไขหรือไม่
ลิงก์สิทธิ์แก้ไข phpmyadmin

ควรตรวจสอบการตั้งค่าในพื้นที่ที่ไฮไลต์:

สิทธิพิเศษของผู้ใช้ phpmyadmin

หมายเหตุ: หากคุณไม่สามารถให้สิทธิ์ที่จำเป็นผ่าน phpMyAdmin ได้ คุณอาจต้องเข้าถึงอินเทอร์เฟซบรรทัดคำสั่งของ MySQL เพื่อให้สิทธิ์

3. ตรวจสอบสถานะเซิร์ฟเวอร์ MySQL

ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ MySQL กำลังทำงานอยู่ คุณสามารถตรวจสอบสถานะเซิร์ฟเวอร์ได้โดยการรันคำสั่งต่อไปนี้หลังจากล็อกอินในเซิร์ฟเวอร์เชลล์:

 systemctl status mysql

หากเซิร์ฟเวอร์ไม่ทำงาน ให้เริ่มโดยใช้คำสั่งต่อไปนี้:

 systemctl start mysql

ในการตรวจสอบสถานะ Mysql บนโฮสติ้ง cPanel คุณต้องลงชื่อเข้าใช้แดชบอร์ดโฮสติ้งของคุณ อีกวิธีคือติดต่อผู้ให้บริการโฮสติ้งของคุณโดยตรง

4. ตรวจสอบว่าเซิร์ฟเวอร์ MySQL กำลังฟังพอร์ตที่ถูกต้องหรือไม่

ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ MySQL กำลังฟังพอร์ตที่ถูกต้อง พอร์ตเริ่มต้นสำหรับ MySQL คือ 3306

หากต้องการตรวจสอบว่าเซิร์ฟเวอร์ MySQL กำลังฟังพอร์ตที่ถูกต้องหรือไม่ คุณสามารถทำตามขั้นตอนต่อไปนี้:

1. เปิดเทอร์มินัลหรือพรอมต์คำสั่งบนเซิร์ฟเวอร์ของคุณที่ติดตั้ง MySQL

2. เชื่อมต่อกับเซิร์ฟเวอร์ MySQL โดยใช้ไคลเอนต์บรรทัดคำสั่ง คุณสามารถใช้คำสั่งต่อไปนี้ แทนที่ username และ password ด้วยข้อมูลรับรอง MySQL จริงของคุณ:

 mysql -u username -p

3. เมื่อคุณเชื่อมต่อกับเซิร์ฟเวอร์ MySQL แล้ว ให้พิมพ์คำสั่งต่อไปนี้เพื่อแสดงหมายเลขพอร์ตที่เซิร์ฟเวอร์ MySQL กำลังฟังอยู่:

SHOW VARIABLES LIKE 'port';

คำสั่งนี้จะแสดงหมายเลขพอร์ตที่เซิร์ฟเวอร์ MySQL กำลังฟังอยู่ ตามค่าเริ่มต้น MySQL จะรับฟังพอร์ต 3306

คุณยังสามารถตรวจสอบหมายเลขพอร์ตในไฟล์คอนฟิกูเรชัน MySQL

ไฟล์การกำหนดค่ามักจะชื่อ my.cnf หรือ my.ini และอยู่ในไดเร็กทอรีการติดตั้ง MySQL

หากต้องการค้นหาไดเร็กทอรีการติดตั้ง MySQL คุณสามารถทำตามขั้นตอนเหล่านี้:

1. เปิดเทอร์มินัลหรือพรอมต์คำสั่งบนเซิร์ฟเวอร์ของคุณที่ติดตั้ง MySQL

2. พิมพ์คำสั่งต่อไปนี้เพื่อตรวจสอบว่ามีการติดตั้ง MySQL หรือไม่:

which mysql

หากติดตั้ง MySQL ไว้ คำสั่งนี้จะแสดงพาธไปยังไฟล์ปฏิบัติการ mysql มิฉะนั้น คุณจะได้รับข้อความแสดงข้อผิดพลาด

หากติดตั้ง MySQL แล้ว คุณสามารถใช้คำสั่ง which อีกครั้งเพื่อค้นหาไดเร็กทอรีการติดตั้ง พิมพ์คำสั่งต่อไปนี้ แทนที่ /path/to/mysql ด้วยเส้นทางไปยังไฟล์ปฏิบัติการ mysql :

 which mysql | xargs readlink -f | sed "s|bin/mysql$||"

คำสั่งนี้จะแสดงไดเรกทอรีการติดตั้ง MySQL คุณสามารถใช้ไดเร็กทอรีนี้เพื่อค้นหาไฟล์การกำหนดค่า MySQL ( my.cnf หรือ my.ini ) และไฟล์และไดเร็กทอรี MySQL อื่นๆ

หรือหากคุณมีสิทธิ์เข้าถึงไคลเอนต์ MySQL คุณยังสามารถดำเนินการค้นหาต่อไปนี้เพื่อค้นหาไดเร็กทอรีการติดตั้ง MySQL:

 SELECT @@basedir;

นี่จะแสดงไดเร็กทอรีการติดตั้ง MySQL

คุณยังสามารถตรวจสอบไฟล์การกำหนดค่า MySQL เพื่อตรวจสอบหมายเลขพอร์ตที่กำหนดค่า MySQL ให้รับฟัง ไฟล์การกำหนดค่ามักจะชื่อ my.cnf หรือ my.ini และอยู่ในไดเร็กทอรีการติดตั้ง MySQL

พอร์ต my.cnf และ sql

เปิดไฟล์การกำหนดค่าด้วยโปรแกรมแก้ไขข้อความและค้นหาพารามิเตอร์พอร์ต ค่าของพารามิเตอร์นี้ระบุหมายเลขพอร์ตที่กำหนดค่า MySQL ให้รับฟัง

หากเซิร์ฟเวอร์ MySQL ไม่รับฟังพอร์ตที่ถูกต้อง คุณสามารถเปลี่ยนพารามิเตอร์พอร์ตในไฟล์กำหนดค่าและรีสตาร์ทเซิร์ฟเวอร์ MySQL เพื่อใช้การเปลี่ยนแปลง

อย่าลืมรีสตาร์ทบริการ Mysql หากคุณเปลี่ยนพอร์ต:

 service mysql restart

5. รีเซ็ตรหัสผ่านรูท

หากขั้นตอนข้างต้นไม่ได้ผล คุณสามารถลองรีเซ็ตรหัสผ่านรูทได้ คุณสามารถทำได้โดยทำตามขั้นตอนในบทความนี้:

https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html

หมายเหตุ: วิธีนี้ต้องการให้คุณมีสิทธิ์เข้าถึงไฟล์คอนฟิกูเรชัน MySQL และความสามารถในการรีสตาร์ทเซิร์ฟเวอร์ MySQL

คุณอาจสนใจอ่าน:

วิธีแก้ไขข้อผิดพลาด “การติดตั้งล้มเหลว: ไม่สามารถสร้างไดเร็กทอรี” บน WordPress

วิธีแก้ไข WordPress ติดอยู่ในโหมดการบำรุงรักษา (แก้ไขแล้ว)

วิธีแก้ไข “การอัปเดตล้มเหลว การตอบกลับไม่ใช่การตอบกลับ JSON ที่ถูกต้อง”

วิธีแก้ไข “ข้อผิดพลาดในการสร้างการเชื่อมต่อฐานข้อมูล”? – 2566