"unix_socket" ถูกเรียกโดยกระบวนการพิสูจน์ตัวตน mysql (อาจเกี่ยวข้องกับการโยกย้ายบางส่วนของฐานข้อมูลไปยัง mariadb ตอนนี้ถูกลบ) เพื่อให้ทุกอย่างกลับมาทำงานได้ su:
sudo su
จากนั้นทำตาม:
/etc/init.d/mysql stop
mysqld_safe --skip-grant-tables &
mysql -uroot
สิ่งนี้จะหยุด mysql โดยสิ้นเชิงรับรองความถูกต้องของผู้ใช้ (ไม่ต้องใช้รหัสผ่าน) และเชื่อมต่อกับ mysql ด้วย "root" ของผู้ใช้
ตอนนี้ในคอนโซล mysql ไปใช้ db บริหาร mysql:
use mysql;
หากต้องการรีเซ็ตรหัสผ่านรูทเป็นmynewpassword (เปลี่ยนตามที่คุณต้องการ) เพียงเพื่อให้แน่ใจว่า:
update user set password=PASSWORD("mynewpassword") where User='root';
และอันนี้จะเขียนทับวิธีการพิสูจน์ตัวตนลบคำขอ unix_socket (และทุกอย่างอื่น) คืนค่าวิธีการรหัสผ่านปกติและการทำงาน:
update user set plugin="mysql_native_password";
ออกจากคอนโซล mysql:
quit;
หยุดและเริ่มทุกสิ่งที่เกี่ยวข้องกับ mysql:
/etc/init.d/mysql stop
kill -9 $(pgrep mysql)
/etc/init.d/mysql start
อย่าลืมไปexit
ที่โหมด su
ตอนนี้เซิร์ฟเวอร์ mySQL เริ่มทำงานแล้ว คุณสามารถเข้าสู่ระบบด้วยรูท:
mysql -u root -p
หรือสิ่งที่คุณต้องการ การใช้รหัสผ่านเป็นการทำงาน
แค่นั้นแหละ.