จะรีเซ็ตหรือกู้คืนรหัสผ่านบัญชีผู้ดูแลระบบสำหรับ MySQL ได้อย่างไร


14

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

คำตอบ:


15

อ่านและดำเนินการเกี่ยวกับการรีเซ็ตรหัสผ่านรูทในคู่มืออ้างอิง MySQL

โพรซีเดอร์นี้เริ่ม mysql daemon โดยไม่มีการอนุญาตให้คุณเชื่อมต่อโดยไม่ต้องระบุข้อมูลรับรอง ในโหมดนี้คุณสามารถเชื่อมต่อได้ตามปกติและรีเซ็ตรหัสผ่านและเงินช่วยเหลือ หลังจากนั้นอย่าลืมเริ่ม mysql อีกครั้งด้วยการอนุญาตที่เหมาะสม


6

ถ้าเป็นกล่อง 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

3

ไม่มีผู้ใช้รูทของฉัน บน

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


0

เนื่องจากขั้นตอนในคู่มืออ้างอิง MySQLไม่ชัดเจนฉันพยายามตอบคำถามนี้ด้วยภาษาที่ง่ายขึ้น (คำตอบนี้เกี่ยวข้องกับผู้ใช้ MacBook OSX):

  1. เนื่องจากเราไม่ทราบรหัสผ่านปัจจุบันเซิร์ฟเวอร์ MySQL จำเป็นต้องเรียกใช้การข้าม / บายพาสข้อมูลรับรองการเข้าสู่ระบบปัจจุบัน สั่งให้เซิร์ฟเวอร์ MySQL ข้ามการเข้าใช้ตารางโดย:
    • หยุดเซิร์ฟเวอร์ MySQL ของคุณ (ถ้ามันกำลังทำงานอยู่)
    • ค้นหาแฟ้มการกำหนดค่า MySQL my.cnfของคุณ (สำหรับฉันมันถูกวางไว้ @ /Applications/XAMPP/xamppfiles/etcคุณสามารถค้นหาได้หากคุณหาไม่พบ)
    • เปิดmy.cnfไฟล์ในตัวแก้ไขข้อความใด ๆ
    • เพิ่ม"skip-grant-tables"(โดยไม่ใส่เครื่องหมายอัญประกาศ) ที่ท้าย[mysqld]ส่วนและบันทึกไฟล์
    • ตอนนี้เริ่มเซิร์ฟเวอร์ MySQL ของคุณ มันจะเริ่มต้นด้วยskip-grant-tablesตัวเลือก
  2. เปิดTerminalและเรียกใช้mysqlคำสั่ง
  3. ดำเนินการคำสั่ง mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
  4. ดำเนินการคำสั่ง mysql> FLUSH PRIVILEGES;
  5. ดำเนินการคำสั่ง mysql> exit
  6. รีสตาร์ทเซิร์ฟเวอร์ MySQL
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.