ฉันทำชื่อผู้ใช้และรหัสผ่าน MySQL ของฉันหาย ฉันจะรับมันได้อย่างไร
ฉันทำชื่อผู้ใช้และรหัสผ่าน MySQL ของฉันหาย ฉันจะรับมันได้อย่างไร
คำตอบ:
หยุดกระบวนการ MySQL
เริ่มกระบวนการ MySQL ด้วยตัวเลือก --skip-grant-tables
เริ่มไคลเอนต์คอนโซล MySQL ด้วยตัวเลือกรูท -u
รายชื่อผู้ใช้ทั้งหมด;
SELECT * FROM mysql.user;
รีเซ็ตรหัสผ่าน;
UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';
แต่อย่าลืมที่จะ
หยุดกระบวนการ MySQL
เริ่มกระบวนการ MySQL ตามปกติ (เช่นไม่มีตัวเลือก --skip-grant-tables)
เมื่อเสร็จแล้ว มิฉะนั้นความปลอดภัยของฐานข้อมูลของคุณอาจถูกบุกรุก
dpkg-reconfigure mysql-server-5.5
คำสั่งเพื่อรีเซ็ตรหัสผ่าน root ของ MySQL มีความสำคัญอย่างไร
-u
--skip-grant-tables
mysql.user
เรียกpassword
ใช้authentication_string
แทน
น่าเสียดายที่รหัสผ่านผู้ใช้ของคุณไม่สามารถเรียกคืนได้ มันถูกแฮชด้วยแฮชทางเดียวซึ่งถ้าคุณไม่รู้ว่ามันไม่สามารถย้อนกลับได้ ฉันแนะนำให้ไปกับ Xenph Yan ด้านบนและเพิ่งสร้างใหม่
คุณยังสามารถใช้ขั้นตอนต่อไปนี้จากคู่มือการตั้งค่ารหัสผ่านสำหรับบัญชีroot MySQL บน Windows:
เมนูเริ่ม -> แผงควบคุม -> เครื่องมือการดูแลระบบ -> บริการ
จากนั้นค้นหาบริการ MySQL ในรายการและหยุด หากเซิร์ฟเวอร์ของคุณไม่ได้ทำงานเป็นบริการคุณอาจต้องใช้ตัวจัดการงานเพื่อบังคับให้หยุดทำงาน
สร้างไฟล์ข้อความและวางคำสั่งต่อไปนี้ไว้ในนั้น เปลี่ยนรหัสผ่านด้วยรหัสผ่านที่คุณต้องการใช้
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
FLUSH PRIVILEGES;
คำสั่ง UPDATEและFLUSHแต่ละรายการจะต้องเขียนในบรรทัดเดียว UPDATEคำสั่งรีเซ็ตรหัสผ่านสำหรับบัญชีทั้งหมดที่มีอยู่รากและล้างคำสั่งบอกเซิร์ฟเวอร์เพื่อโหลดตารางให้ในหน่วยความจำ
เปิดหน้าต่างคอนโซลเพื่อไปที่พร้อมท์คำสั่ง:
เมนูเริ่ม -> เรียกใช้ -> cmd
เริ่มเซิร์ฟเวอร์ MySQL ด้วยตัวเลือก--init-fileพิเศษ:
C:\> C:\mysql\bin\mysqld-nt --init-file = C:\mysql-init.txt
หากคุณติดตั้ง MySQL ไปยังตำแหน่งอื่นที่ไม่ใช่C: \ mysqlให้ปรับคำสั่งตามนั้น
เซิร์ฟเวอร์รันเนื้อหาของแฟ้มการตั้งชื่อโดยที่--init ไฟล์ตัวเลือกที่เริ่มต้นการเปลี่ยนแปลงแต่ละรากรหัสผ่านของบัญชี
คุณยังสามารถเพิ่มตัวเลือก--consoleลงในคำสั่งหากคุณต้องการให้เซิร์ฟเวอร์เอาท์พุทปรากฏในหน้าต่างคอนโซลแทนในไฟล์บันทึก
หากคุณติดตั้ง MySQL โดยใช้ตัวช่วยสร้างการติดตั้ง MySQL คุณอาจต้องระบุตัวเลือก--defaults-file :
C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini" --init-file=C:\mysql-init.txt
การตั้งค่า--defaults-fileที่เหมาะสมสามารถพบได้โดยใช้ Services Manager:
เมนูเริ่ม -> แผงควบคุม -> เครื่องมือการดูแลระบบ -> บริการ
ค้นหาบริการ MySQL ในรายการคลิกขวาแล้วเลือกตัวเลือก Properties ฟิลด์ Path to executable มีการตั้งค่า--defaults-file
ตอนนี้คุณควรจะสามารถเชื่อมต่อกับ MySQL ในฐานะรูทโดยใช้รหัสผ่านใหม่ได้แล้ว
mysqld-nt
แทนmysqld
?
การปรับปรุงคำตอบที่มีประโยชน์ที่สุดที่นี่:
1] ไม่จำเป็นต้องรีสตาร์ทเซิร์ฟเวอร์ mysql
2] ข้อกังวลด้านความปลอดภัยสำหรับเซิร์ฟเวอร์ MySQL ที่เชื่อมต่อกับเครือข่าย
ไม่จำเป็นต้องรีสตาร์ทเซิร์ฟเวอร์ MySQL
ใช้FLUSH PRIVILEGES;
หลังคำสั่ง mysql.user สำหรับการเปลี่ยนรหัสผ่าน
คำสั่งล้างข้อมูลบอกให้เซิร์ฟเวอร์โหลดตารางการให้สิทธิ์ลงในหน่วยความจำใหม่เพื่อแจ้งการเปลี่ยนรหัสผ่าน
--skip-grant-options
ช่วยให้ทุกคนที่จะเชื่อมต่อได้โดยไม่ต้องใช้รหัสผ่านและมีสิทธิ์ทั้งหมด เนื่องจากสิ่งนี้ไม่ปลอดภัยคุณอาจต้องการ
ใช้--skip-grant-tablesร่วมกับ--skip-networkingเพื่อป้องกันไม่ให้ไคลเอนต์ระยะไกลเชื่อมต่อ
จาก: การอ้างอิง: การรีเซ็ต - สิทธิ์ - ทั่วไป
mysql.user
หรือไม่ แม้ว่าบ่อยครั้งนั่นไม่ใช่กรณี
ในขณะที่คุณไม่สามารถกู้คืนรหัสผ่าน MySQL ได้โดยตรงโดยไม่ต้อง bruteforcing อาจมีวิธีอื่นถ้าคุณใช้ MySQL Workbench เพื่อเชื่อมต่อกับฐานข้อมูล
ใน Windows ข้อมูลประจำตัวจะถูกเก็บไว้ใน% APPDATA% \ MySQL \ Workbench \ workbench_user_data.dat - เข้ารหัสด้วยCryptProtectData (โดยไม่ต้องมีเอนโทรปีเพิ่มเติม) การถอดรหัสนั้นง่ายมาก
std::vector<unsigned char> decrypt(BYTE *input, size_t length) {
DATA_BLOB inblob { length, input };
DATA_BLOB outblob;
if (!CryptUnprotectData(&inblob, NULL, NULL, NULL, NULL, CRYPTPROTECT_UI_FORBIDDEN, &outblob)) {
throw std::runtime_error("Couldn't decrypt");
}
std::vector<unsigned char> output(length);
memcpy(&output[0], outblob.pbData, outblob.cbData);
return output;
}
หรือคุณสามารถตรวจสอบเธรด DonationCoderนี้เพื่อหาแหล่งที่มาและการปฏิบัติการของการนำไปใช้อย่างรวดเร็วและสกปรก
รันคำสั่งต่อไปนี้ใน Terminal เพื่อเชื่อมต่อกับ DBMS (คุณจำเป็นต้องเข้าถึงรูท):
sudo mysql -u root -p;
เรียกใช้รหัสผ่านอัปเดตของผู้ใช้เป้าหมาย (สำหรับตัวอย่างชื่อผู้ใช้ของฉันคือmousavi
และต้องเป็นรหัสผ่าน123456
):
UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='mousavi';
ณ จุดนี้คุณต้องทำการ flush เพื่อทำการเปลี่ยนแปลง:
FLUSH PRIVILEGES;
ทำ! คุณทำโดยไม่หยุดหรือเริ่มบริการ mysql ใหม่
หากคุณมีสิทธิ์เข้าถึงรูทไปยังเซิร์ฟเวอร์ที่รัน mysql อยู่คุณควรหยุดเซิร์ฟเวอร์ mysql โดยใช้คำสั่งนี้
sudo service mysql stop
ตอนนี้เริ่ม mysql โดยใช้คำสั่งนี้
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
ตอนนี้คุณสามารถเข้าสู่ mysql โดยใช้
sudo mysql
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
คำแนะนำแบบเต็มสามารถดูได้ที่นี่http://www.techmatterz.com/recover-mysql-root-password/
เข้าสู่ระบบ MySql จาก windows cmd โดยใช้ผู้ใช้ที่มีอยู่:
mysql -u ชื่อผู้ใช้ -p
ป้อนรหัสผ่าน: ****
จากนั้นรันคำสั่งต่อไปนี้:
mysql> SELECT * FROM mysql.user;
หลังจากนั้นคัดลอกรหัสผ่าน md5 ที่เข้ารหัสสำหรับผู้ใช้ที่เกี่ยวข้องและมีแอปพลิเคชันถอดรหัสรหัสผ่านออนไลน์หลายรายการในเว็บ ใช้รหัสผ่านถอดรหัสนี้และใช้เพื่อเข้าสู่ระบบในครั้งต่อไป หรืออัปเดตรหัสผ่านผู้ใช้โดยใช้คำสั่งโฟลว์:
mysql> UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';
จากนั้นเข้าสู่ระบบโดยใช้รหัสผ่านใหม่และผู้ใช้
หากคุณมีการตั้งค่า ODBC คุณสามารถรับรหัสผ่านได้จากไฟล์ปรับแต่ง ODBC นี่คือใน /etc/odbc.ini สำหรับ Linux และในโฟลเดอร์ Software / ODBC ในรีจิสตรีใน Windows (มีหลายอัน - อาจใช้เวลาในการหาข้อมูล)
บันทึกไฟล์ สำหรับตัวอย่างนี้ไฟล์จะมีชื่อว่า C: \ mysql-init.txt มันขออนุญาตผู้ดูแลระบบสำหรับการบันทึกไฟล์
แม้ว่าการตีความคำถามวิทยาศาสตร์ของวิทยาการคอมพิวเตอร์อย่างเข้มงวดและสมเหตุสมผลจะต้องมีทั้ง "ฉันจะเรียกข้อมูลชื่อผู้ใช้ MySQL ของฉัน" และ "รหัสผ่าน" ได้อย่างไร - ฉันคิดว่ามันอาจเป็นประโยชน์กับบางคนในการอธิบายการตีความOR กล่าวอีกนัยหนึ่ง ...
1) ฉันจะดึงข้อมูลชื่อผู้ใช้ MySQL ของฉันได้อย่างไร
หรือ
2) รหัสผ่าน
สภาพหลังนี้ดูเหมือนว่าจะได้รับการแก้ไขอย่างเพียงพอแล้วดังนั้นฉันจะไม่รำคาญกับมัน ต่อไปนี้เป็นวิธีแก้ปัญหาสำหรับกรณี "ฉันจะเรียกคืนชื่อผู้ใช้ MySQL ของฉันได้อย่างไร" เพียงอย่างเดียว หวัง
ในการค้นหาชื่อผู้ใช้ mysql ของคุณให้รันคำสั่งต่อไปนี้จากเปลือก mysql ...
เลือกผู้ใช้จาก mysql.user;
มันจะพิมพ์ตารางของผู้ใช้ mysql ทั้งหมด