ฉันมีทางออก!
เมื่อรีเซ็ตรหัสผ่าน root ในขั้นตอนที่ 2) ให้เปลี่ยนปลั๊กอิน auth เป็นmysql_native_password
:
use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root'; # THIS LINE
flush privileges;
quit;
สิ่งนี้ทำให้ฉันสามารถเข้าสู่ระบบได้สำเร็จ!
โซลูชันรหัสเต็ม
1. เรียกใช้คำสั่ง bash
1. ก่อนอื่นให้เรียกใช้คำสั่งทุบตีเหล่านี้
sudo /etc/init.d/mysql stop # stop mysql service
sudo mysqld_safe --skip-grant-tables & # start mysql without password
# enter -> go
mysql -uroot # connect to mysql
2. จากนั้นเรียกใช้คำสั่ง mysql => คัดลอกวางสิ่งนี้ลงใน cli ด้วยตนเอง
use mysql; # use mysql table
update user set authentication_string=PASSWORD("") where User='root'; # update password to nothing
update user set plugin="mysql_native_password" where User='root'; # set password resolving to default mechanism for root user
flush privileges;
quit;
3. เรียกใช้คำสั่ง bash เพิ่มเติม
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start # reset mysql
# try login to database, just press enter at password prompt because your password is now blank
mysql -u root -p
4. ปัญหาซ็อกเก็ต (จากความคิดเห็นของคุณ)
เมื่อคุณเห็นข้อผิดพลาดของซ็อกเก็ตชุมชนจะมาพร้อมกับ 2 วิธีแก้ปัญหาที่เป็นไปได้:
sudo mkdir -p /var/run/mysqld; sudo chown mysql /var/run/mysqld
sudo mysqld_safe --skip-grant-tables &
(ขอบคุณ @Cerin)
หรือ
mkdir -p /var/run/mysqld && chown mysql:mysql /var/run/mysqld
(ขอบคุณ @Peter Dvukhrechensky)
เส้นทางตาบอดและข้อผิดพลาดขอบที่อาจเกิดขึ้น
ใช้ 127.0.0.1 แทน localhost
mysql -uroot # "-hlocalhost" is default
อาจทำให้เกิด "ไฟล์หาย" หรือข้อผิดพลาด slt
mysql -uroot -h127.0.0.1
ทำงานได้ดีขึ้น
ข้ามปัญหาซ็อกเก็ต
ฉันพบหลายวิธีในการสร้างmysqld.sock
ไฟล์เปลี่ยนสิทธิ์การเข้าถึงหรือเชื่อมโยงสัญลักษณ์ มันไม่ใช่ปัญหาหลังจากทั้งหมด
ข้ามmy.cnf
ไฟล์
ปัญหาก็ไม่ได้อยู่ที่นั่น หากคุณไม่แน่ใจสิ่งนี้อาจช่วยคุณได้