ฉันมีฐานข้อมูล MySQL ที่ฉัน "สืบทอด" และฉันไม่ได้รับข้อมูลประจำตัวของผู้ดูแลระบบ อย่างไรก็ตามฉันมีสิทธิ์เข้าถึงกล่องที่ทำงานอยู่ มีวิธีกู้คืนข้อมูลประจำตัวของผู้ดูแลระบบหรือสร้างใหม่ได้หรือไม่
ฉันมีฐานข้อมูล MySQL ที่ฉัน "สืบทอด" และฉันไม่ได้รับข้อมูลประจำตัวของผู้ดูแลระบบ อย่างไรก็ตามฉันมีสิทธิ์เข้าถึงกล่องที่ทำงานอยู่ มีวิธีกู้คืนข้อมูลประจำตัวของผู้ดูแลระบบหรือสร้างใหม่ได้หรือไม่
คำตอบ:
อ่านและดำเนินการเกี่ยวกับการรีเซ็ตรหัสผ่านรูทในคู่มืออ้างอิง MySQL
โพรซีเดอร์นี้เริ่ม mysql daemon โดยไม่มีการอนุญาตให้คุณเชื่อมต่อโดยไม่ต้องระบุข้อมูลรับรอง ในโหมดนี้คุณสามารถเชื่อมต่อได้ตามปกติและรีเซ็ตรหัสผ่านและเงินช่วยเหลือ หลังจากนั้นอย่าลืมเริ่ม mysql อีกครั้งด้วยการอนุญาตที่เหมาะสม
ถ้าเป็นกล่อง Debian / Ubuntu มีบัญชี root เทียบเท่าพิเศษที่เรียกว่าเดเบียน-SYS-maint คุณสามารถอ่านรหัสผ่านใน/etc/mysql/debian.cnf
ใช้รหัสผ่านที่คุณสามารถเข้าสู่ mysql เป็น debian-sys-maint โดยใช้:
mysql --defaults-file=/etc/mysql/debian.cnf mysql
เมื่อคุณเข้าสู่ระบบทำต่อไปนี้:
update user set password=password('<new password>') where user='root';
flush privileges;
quit;
ตอนนี้รูทควรเข้าถึงได้โดยใช้รหัสผ่านใหม่ของคุณ:
mysql -uroot -p
ไม่มีผู้ใช้รูทของฉัน บน
CREATE USER root@localhost;
ฉันได้
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
ทางออกคือ
mysqld_safe --skip-grant-tables &
mysql
INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword');
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
หลังจากนั้นฉันเพิ่ม privs ทั้งหมดทีละตัวด้วยความช่วยเหลือเล็กน้อยจากนี้:
mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N
(และอันนี้ทำได้และควรอัตโนมัติมากกว่า)
หมายเหตุ: การค้นหา 'Y's ในจำนวนที่ถูกต้องINSERT
คือ PITA
เนื่องจากขั้นตอนในคู่มืออ้างอิง MySQLไม่ชัดเจนฉันพยายามตอบคำถามนี้ด้วยภาษาที่ง่ายขึ้น (คำตอบนี้เกี่ยวข้องกับผู้ใช้ MacBook OSX):
my.cnf
ของคุณ (สำหรับฉันมันถูกวางไว้ @ /Applications/XAMPP/xamppfiles/etc
คุณสามารถค้นหาได้หากคุณหาไม่พบ)my.cnf
ไฟล์ในตัวแก้ไขข้อความใด ๆ "skip-grant-tables"
(โดยไม่ใส่เครื่องหมายอัญประกาศ) ที่ท้าย[mysqld]
ส่วนและบันทึกไฟล์ skip-grant-tables
ตัวเลือก Terminal
และเรียกใช้mysql
คำสั่ง mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit