เปลี่ยนรหัสผ่านผู้ใช้ mysql โดยใช้บรรทัดคำสั่ง


84

ฉันกำลังพยายามอัปเดตรหัสผ่านสำหรับผู้ใช้ฐานข้อมูลโดยใช้บรรทัดคำสั่ง แต่มันไม่ได้ผลสำหรับฉัน นี่คือรหัสที่ฉันใช้:

mysql> UPDATE user SET password=PASSWORD($w0rdf1sh) WHERE user='tate256';

ใครช่วยบอกฉันหน่อยว่ามีอะไรผิดปกติกับรหัสนี้


คุณทำตามขั้นตอนใดบ้าง เพียงแค่ใส่เข้าไปจะไม่ได้ผล ถ้าจำไม่ผิดมันเป็นกระบวนการและรหัสนั้น
Idris

อา. คุณจำขั้นตอนวิธีการทำได้หรือไม่?
user3310572

นี้เป็นบิตรายละเอียดมากขึ้นและควรจะง่ายที่จะเข้าใจinnovativethought.net/2007/05/17/...
ไอดริส

คำตอบ:


116

ในรหัสของคุณให้ลองใส่รหัสผ่านไว้ในใบเสนอราคาเดียว อีกวิธีหนึ่งตามเอกสารของ mysql สิ่งต่อไปนี้ควรใช้งานได้ -

SET PASSWORD FOR 'jeffrey'@'localhost' = PASSWORD('cleartext password');

FLUSH PRIVILEGES;

บรรทัดสุดท้ายมีความสำคัญมิฉะนั้นการเปลี่ยนรหัสผ่านของคุณจะไม่มีผล

แก้ไข:

ฉันทำการทดสอบในพื้นที่ของฉันและได้ผล -

mysql>  set password for 'test' = PASSWORD('$w0rdf1sh');
Query OK, 0 rows affected (0.00 sec)

Mine เป็นเวอร์ชัน 5 คุณสามารถใช้คำสั่งต่อไปนี้เพื่อกำหนดเวอร์ชันของคุณ -

SHOW VARIABLES LIKE "%version%";

4
เมื่อฉันทำเช่นนั้นจะส่งคืนข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด ('
user3310572

1
คุณใช้ mysql รุ่นอะไร? ฉันเลือกไวยากรณ์ข้างต้นจากเอกสารประกอบเวอร์ชัน 5.0 คุณลองใช้คำสั่งที่ฉันโพสต์หรือไม่?
hellboy

ฉันเชื่อว่าฉันใช้เวอร์ชัน 4.0 และใช่ฉันลองแล้ว
user3310572

คำสั่งใช้งานได้ดีสำหรับฉันใน MySQL Ver 14.14 ตรวจสอบให้แน่ใจว่ารหัสผ่านถูกห่อด้วยเครื่องหมายคำพูดและเครื่องหมายคำพูดใด ๆ ในรหัสผ่านจะถูกหลีกเลี่ยง
Snaver

1
น่าแปลกแม้หลังจากล้างแล้วก็ยังไม่ได้ผลสำหรับฉัน :-( ฉันใช้ Mysql5.7.18-0ubuntu0.16.04.1
coding_idiot

37

สำหรับ MySQL 5.7.6 ให้ใช้ไฟล์ ALTER USER

ตัวอย่าง:

ALTER USER 'username' IDENTIFIED BY 'password';

เพราะ:

  • SET PASSWORD ... = PASSWORD('auth_string') ไวยากรณ์เลิกใช้แล้วเมื่อ MySQL 5.7.6 และจะถูกลบออกในรุ่น MySQL ในอนาคต

  • SET PASSWORD ... = 'auth_string'ไม่ได้เลิกใช้ไวยากรณ์ แต่ALTER USERตอนนี้เป็นคำสั่งที่ต้องการสำหรับการกำหนดรหัสผ่าน


1
นี่เป็นความจริงแม้แต่กับการโต้ตอบกับ MySQL ผ่าน PHP หรือไม่
oldboy

@Anthony ใช่ iff เวอร์ชัน MySQL ของคุณคือ> = 5.7.6
Govind Rai

ฉันยังใหม่กับ MySQL สิ่งที่ไม่ALTER USER ... IDENTIFIED BY ...ทำตรง? มันแตกต่างจากUPDATE ... SET ...หรือINSERT INTO ...อย่างไร?
oldboy

1
ALTER USER ... IDENTIFIED BY ...เป็นคำสั่ง SQL ที่กำหนดค่าสิทธิ์ผู้ใช้สำหรับฐานข้อมูลของคุณ UPDATEและINSERTมีฟังก์ชันการทำงานที่แตกต่างกันเช่นชื่อที่แนะนำอัปเดตบันทึกและแทรกระเบียนลงในตารางในฐานข้อมูล
Govind Rai

2
ให้ข้อผิดพลาดใน mariaDbERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'USER 'root' IDENTIFIED BY
Pavel Niedoba



3

ก่อน MySQL 5.7.6 สิ่งนี้ทำงานจากบรรทัดคำสั่ง:

mysql -e "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$w0rdf1sh');"

ฉันไม่มีการติดตั้ง mysql ที่จะทดสอบ แต่ฉันคิดว่าในกรณีของคุณมันจะเป็นเช่นนั้น

mysql -e "UPDATE mysql.user SET Password=PASSWORD('$w0rdf1sh') WHERE User='tate256';"

2

ใน windows 10 เพียงแค่ออกจากการเข้าสู่ระบบปัจจุบันและเรียกใช้สิ่งนี้ในบรรทัดคำสั่ง

-> mysqladmin -u root password “newpassword”

โดยที่แทนที่จะรูทอาจเป็นผู้ใช้ใดก็ได้




-1

/usr/local/directadmin/conf/mysql.confรากเข้าสู่ระบบของคุณควรจะ จากนั้นลองทำตาม

UPDATE mysql.user SET password=PASSWORD('$w0rdf1sh') WHERE user='tate256' AND Host='10.10.2.30';
FLUSH PRIVILEGES;

โฮสต์คือโฮสต์ mysql ของคุณ


1
ไม่ทำงาน ส่งคืนข้อผิดพลาดทางไวยากรณ์ใกล้กับโทเค็นที่ไม่คาดคิด ('
user3310572
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.