ฉันจะเปลี่ยนรหัสผ่าน root ของ mysql ของฉันกลับเป็นว่างได้อย่างไร


43

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

คำตอบ:


43

ในการเปลี่ยนรหัสผ่านรูทเป็นnewpassword:

 mysqladmin -u root -p'oldpassword' password 'newpassword'

หากต้องการเปลี่ยนให้รูทไม่ต้องใช้รหัสผ่าน:

 mysqladmin -u root -p'oldpassword' password ''

หมายเหตุ: ฉันคิดว่ามันเป็นเรื่องสำคัญที่ไม่มีช่องว่างระหว่าง-pและ'oldpassword'แต่ฉันอาจผิดเกี่ยวกับเรื่องนั้น


3
ฉันได้รับข้อผิดพลาด: การเข้าถึงถูกปฏิเสธสำหรับ 'root' @ localhost ฉันจะแก้ไขสิ่งนี้ได้อย่างไร
tq

ใช้งานได้สำหรับฉัน: mysqladmin -u root -p'oldpassword 'password' '@tq: คุณต้องพิมพ์ oldpassword อย่างเต็มที่
Nam

15

แทนที่จะลบรหัสผ่าน (ซึ่งอาจมีผลกระทบที่ไม่พึงประสงค์ในอนาคตหากคุณเปิดเผยเซิร์ฟเวอร์นั้นให้ Wild) ให้ใส่รหัสผ่านปัจจุบัน (และชื่อผู้ใช้ของคุณ) ลงใน~/.my.cnf(หรือตำแหน่งที่เทียบเท่าใน Windows) ที่มีลักษณะดังนี้:

[client]
user = root
password = s3kr1t

สิ่งนี้ทำให้ MySQL มีความสามารถที่ยอดเยี่ยมในการ autologin โดยใช้ข้อมูลประจำตัวที่ให้ไว้โดยไม่ทำให้คุณเปิดกว้างสำหรับความไม่พอใจในอนาคต


7
  1. หยุด mysqld และรีสตาร์ทด้วยตัวเลือก--skip-grant-tables
  2. เชื่อมต่อโดยใช้เพียงMySQL
  3. เปลี่ยนรหัสผ่านรูท:

    อัพเดท mysql.user ตั้งรหัสผ่าน = PASSWORD ('MyNewPass') WHERE User = 'root';

    สิทธิในการชำระล้าง

สำหรับการอ้างอิง: เอกสาร MySQL อย่างเป็นทางการ


1
มันใช้งานได้ แต่เป็นวิธีที่ดุร้ายในการทำมัน สิ่งนี้มีไว้สำหรับเมื่อคุณไม่ทราบรหัสผ่าน
David

6

โปรดทราบว่าเริ่มต้นด้วย MySQL 5.7 ปลั๊กอินvalidate_passwordนั้นมีการใช้งานตามค่าเริ่มต้นและป้องกันไม่ให้คุณใช้รหัสผ่านที่ว่างเปล่า

คุณต้องปิดการใช้งานปลั๊กอินนี้เพื่ออนุญาตให้ใช้รหัสผ่านที่ว่างเปล่า:

UNINSTALL PLUGIN validate_password;
SET PASSWORD FOR root@localhost = PASSWORD('');

ระวังว่าถ้าคุณไม่ใส่ใจเรื่องความปลอดภัยคุณควรปฏิบัติตามคำแนะนำของ @ wombleและใช้รหัสผ่านพร้อมกับ.my.cnfไฟล์เพื่อความสะดวก

ตรวจสอบบทความของฉันการลบรหัสผ่าน root ของ MySQLในหัวข้อนี้!


สำหรับรุ่น> 5.6 นี่เป็นวิธีเดียวที่ใช้งานได้ ฉันสงสัยว่ามันควรทำงานกับเวอร์ชันก่อนหน้าด้วย
Diego

1

ในรุ่นที่ใหม่กว่า

UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root'

และจะลบรหัสผ่าน

UPDATE mysql.user SET authentication_string=PASSWORD('') WHERE User='root'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.