เมื่อฉันใช้รหัสmysqld_safe --skip-grant-tables &
แต่ฉันได้รับข้อผิดพลาด:
mysqld_safe Directory '/ var / run / mysqld' สำหรับไฟล์ซ็อกเก็ต UNIX ไม่มีอยู่
$ systemctl stop mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &
ฉันแก้ไข:
$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld
ตอนนี้ฉันใช้รหัสเดียวกันmysqld_safe --skip-grant-tables &
และได้รับ
mysqld_safe เริ่มต้น mysqld daemon ด้วยฐานข้อมูลจาก / var / lib / mysql
ถ้าฉันใช้ $ mysql -u root
ฉันจะได้รับ:
รุ่นเซิร์ฟเวอร์: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)
ลิขสิทธิ์ (c) 2000, 2017, Oracle และ / หรือ บริษัท ในเครือ สงวนลิขสิทธิ์.
Oracle เป็นเครื่องหมายการค้าจดทะเบียนของ Oracle Corporation และ / หรือ บริษัท ในเครือ ชื่ออื่น ๆ อาจเป็นเครื่องหมายการค้าของเจ้าของที่เกี่ยวข้อง
พิมพ์ 'ความช่วยเหลือ;' หรือ '\ h' เพื่อขอความช่วยเหลือ พิมพ์ '\ c' เพื่อล้างคำสั่งอินพุตปัจจุบัน
MySQL>
ตอนนี้ถึงเวลาเปลี่ยนรหัสผ่าน:
mysql> use mysql
mysql> describe user;
การอ่านข้อมูลตารางเพื่อความสมบูรณ์ของชื่อตารางและคอลัมน์คุณสามารถปิดคุณสมบัตินี้เพื่อให้เริ่มต้นได้เร็วขึ้นด้วย -A
ฐานข้อมูลมีการเปลี่ยนแปลง
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');
หรือหากคุณมีบัญชีรูท mysql ที่สามารถเชื่อมต่อได้จากทุกที่คุณควรทำดังนี้
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
วิธีอื่น:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = 'localhost' AND User = 'root';
และหากคุณมีบัญชีรูทที่สามารถเข้าถึงได้จากทุกที่:
USE mysql
UPDATE user SET Password = PASSWORD('newpwd')
WHERE Host = '%' AND User = 'root';`enter code here
ตอนนี้ต้องquit
จาก mysql และหยุด / เริ่ม
FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
ตอนนี้อีกครั้ง `mysql -u root -p 'และใช้รหัสผ่านใหม่เพื่อรับ
MySQL>