รีเซ็ตรหัสผ่าน root MySQL โดยใช้คำสั่ง ALTER USER หลังจากติดตั้งบน Mac


184

ฉันใหม่สำหรับประสบการณ์ Mac ทั้งหมด ฉันเพิ่งติดตั้ง MySQL และดูเหมือนว่าฉันต้องรีเซ็ตรหัสผ่านหลังการติดตั้ง มันจะไม่ยอมให้ฉันทำอะไรอีกเลย

ตอนนี้ฉันได้รีเซ็ตรหัสผ่านตามปกติแล้ว:

update user set password = password('XXX') where user = root;

(BTW: ทำให้ฉันมีอายุมากขึ้นที่จะทำงานกับ MySQL ด้วยเหตุผลที่แปลกประหลาดบางอย่างได้เปลี่ยนชื่อฟิลด์เป็น 'รหัสผ่าน' เป็น 'authentication_string' ฉันรู้สึกไม่พอใจกับการเปลี่ยนแปลงเช่นนั้น)

น่าเสียดายที่ฉันต้องเปลี่ยนรหัสผ่านในแบบที่ฉันไม่รู้จัก อาจมีบางคนที่นี่เจอปัญหานั้นอยู่แล้ว?

คำตอบ:


508

หากนี่ไม่ใช่ครั้งแรกที่คุณตั้งค่ารหัสผ่านให้ลองวิธีนี้:

mysql> UPDATE mysql.user SET Password=PASSWORD('your_new_password')
           WHERE User='root'; 

และหากคุณได้รับข้อผิดพลาดต่อไปนี้มีโอกาสสูงที่คุณไม่เคยตั้งรหัสผ่านมาก่อน:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. 

วิธีตั้งค่ารหัสผ่านของคุณเป็นครั้งแรก :

mysql> SET PASSWORD = PASSWORD('your_new_password');
Query OK, 0 rows affected, 1 warning (0.01 sec)

การอ้างอิง: https://dev.mysql.com/doc/refman/5.6/en/alter-user.html


10
ขอบคุณ! ข้อความแสดงข้อผิดพลาดที่สับสนมากจาก MySQL แม้ว่า!
เอ็ด

1
สิ่งนี้ใช้ได้กับฉันด้วย mysql-5.7.13-osx10.11-x86_64
GiriB

1
หลังจาก 'mysql> SET PASSWORD = PASSWORD (' your_new_password ');' ฉันได้รับข้อผิดพลาดต่อไปนี้: 'ERROR 29 (HY000): ไฟล์' ./mysql/user.MYD 'ไม่พบ (Errcode: 2 - ไม่เช่นนั้น ไฟล์หรือไดเรกทอรี) ' มีคนช่วยฉันได้ไหม
Ray Kim

4
คุณจะทราบว่าสิ่งที่ MySQL แนะนำคุณไม่ได้ใช้คำสั่ง "ALTER USER" แต่เพียงแค่ "SET PASSWORD" ...
Fabien Haddadi

1
ตัวอย่างแรกอาจพยายามตั้งรหัสผ่านสำหรับผู้ใช้รายอื่นนอกเหนือจากที่คุณใช้เมื่อส่งบรรทัดนั้น ครั้งที่สองพยายามที่จะตั้งรหัสผ่านสำหรับผู้ใช้ที่คุณใช้ในการเข้าสู่ mysql ดังนั้นการทำงานในภายหลัง
Hafenkranich

130

หากคุณเริ่มใช้ mysql mysql -u root -p

ลอง ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

ที่มา: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html


1
ขอบคุณ! สิ่งนี้ได้ผลสำหรับฉัน! ฉันใช้ mysql-5.7.11-osx10.10-x86_64
LeArNr

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

ขอบคุณมาก! มันช่วยฉัน
Sparw

3
หลังจากแห้วมากตัวแปรนี้ทำงานในมิ้นต์ 18 mysql 5.7.18:ALTER USER 'root'@'localhost' indentified WITH mysql_native_password BY 'password';
Steve

หนึ่งล้านขอบคุณ นั่นเป็นสิ่งเดียวที่ได้ผลสำหรับฉัน
RandyMy

33

ฉันมีปัญหาเดียวกันบน Mac

ก่อนเข้าสู่ระบบ mysql ด้วยโหมด sandbox

mysql -u <user> -p --connect-expired-password

จากนั้นตั้งรหัสผ่าน

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('XXXX');

Query OK, 0 rows affected, 1 warning (0.01 sec)

มันใช้งานได้สำหรับฉัน ~

ผ่าน: /dba/118852/your-paswssword-has-expired-after-restart-mysql-when-updated-mysql-5-7-8-rcde


1
ดูเหมือนจะค่อนข้างซับซ้อนที่จำไว้ว่าคุณต้องทำสิ่งนี้มาก่อนแม้กระทั่งการใช้ฐานข้อมูลเลย
seba.wagner

ในคำเตือนมันต้องการให้คุณใช้SET PASSWORD FOR 'root'@'localhost' = 'XXXX';
Arsen Zahray

22

ถ้าคุณใช้ MySQL 5.7.6 และใหม่กว่า:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

ถ้าคุณใช้ MySQL 5.7.5 และรุ่นก่อนหน้า:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

เอกสาร MySQL


1
ฉันใช้ MySQL 5.7.9 และสิ่งที่แปลกประหลาดSET PASSWORD = PASSWORD('my_pass')สำหรับฉัน มีความคิดเห็นของผู้ที่มีเวอร์ชันล่าสุดที่กล่าวถึงว่าข้อความนี้ได้ผลสำหรับพวกเขาเช่นกัน แม้นี้ฉัน upvote คำตอบของคุณเนื่องจากคุณพบการอ้างอิงเฉพาะในเอกสาร MySQL ที่ไม่มีใครพูดถึงก่อนหน้านี้
Armfoot

MySQL 8 SET PASSWORDโยนและเกิดข้อผิดพลาด ALTER USER ใช้งานได้
Timar Ivo Batis

13

ใน MySQL 5.7.x คุณต้องเปลี่ยนเป็นรหัสผ่านดั้งเดิมเพื่อให้สามารถเปลี่ยนแปลงได้เช่น:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';

11

เรียกใช้สิ่งเหล่านี้:

$ cd /usr/local/mysql/bin
$ ./mysqladmin -u root password 'password'

จากนั้นเรียกใช้

./mysql -u root

มันควรเข้าสู่ระบบตอนนี้เรียกใช้สิทธิ์ล้าง;

จากนั้นออกจากคอนโซล MySQL แล้วลองลงชื่อเข้าใช้หากไม่สามารถใช้งานได้:

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=PASSWORD("XXXXXXX") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

เปลี่ยน xxxxxx เป็นรหัสผ่านใหม่ของคุณ จากนั้นลองลงชื่อเข้าใช้อีกครั้ง

ปรับปรุง ดูhttp://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.htmlนี้

มันควรจะแก้ปัญหาของคุณ

หากคุณอยู่ใน oracle ลองสิ่งนี้

ALTER USER username IDENTIFIED BY password

ไม่ขอโทษด้วยเช่นกัน อย่างน้อยก็ไม่ได้อีกแล้ว Oracle ได้เปลี่ยนชื่อคอลัมน์ 'รหัสผ่าน' เป็น btw ตอนนี้เรียกว่า authentication_string แต่ฉันไม่สามารถดำเนินการคำสั่งนี้ได้เพราะฉันต้องเปลี่ยนรหัสผ่านโดยใช้คำสั่ง ALTER USER สิ่งนี้น่าหงุดหงิดอย่างมากเพราะนั่นไม่ใช่วิธีการที่คุณจะอัปเดตรหัสผ่านแบบดั้งเดิม ALTER ควรสำรองไว้สำหรับตารางฟังก์ชั่นและสิ่งต่าง ๆ ไม่ควรแก้ไขรายการในตาราง นั่นคือคำสั่งอัปเดต (ขออภัยที่คุยโว)
dengar81

@Shivan Paw: สองคำเตือนที่ฉันคาดหวัง: mysqladmin: [คำเตือน] การใช้รหัสผ่านบนอินเตอร์เฟสบรรทัดคำสั่งอาจไม่ปลอดภัย คำเตือน: เนื่องจากรหัสผ่านจะถูกส่งไปยังเซิร์ฟเวอร์เป็นข้อความธรรมดาให้ใช้การเชื่อมต่อ ssl เพื่อความปลอดภัยของรหัสผ่าน - ฉันจะพิจารณาว่ารหัสผ่านได้รับการปรับปรุง และแน่นอนฉันสามารถเข้าสู่ระบบด้วยรหัสผ่านใหม่ อย่างไรก็ตามฉันยังคงไม่สามารถเรียกใช้
คิวรี

@Shivan Paw: ลองทำอะไร ฉันลองใช้คำสั่งที่คุณแนะนำไปแล้ว การรีเซ็ตรหัสผ่านโดยใช้คำสั่ง. /mysqladmin (คำเตือนสองคำ) จากนั้นดำเนินการอัปเดตบน mysql.user ... คำสั่งที่สองล้มเหลวพร้อมข้อความ "คุณต้องรีเซ็ตรหัสผ่านโดยใช้ ALTER USER [... ]"
dengar81

นี่เป็นทางออกเดียวที่ได้ผลสำหรับฉัน หากคุณมีรหัสผ่านที่หมดอายุใน mysql เวอร์ชันล่าสุดจะไม่อนุญาตให้คุณ ALTER_USER หรือ SET_PASSWORD
แอรอนเฮนเดอร์สัน

7

ลองดูสิ

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('XXX');

หรือ

SET PASSWORD FOR 'root'@'%' = PASSWORD('XXX');

ขึ้นอยู่กับการเข้าถึงที่คุณใช้

(และไม่แน่ใจว่าคุณควรเปลี่ยนชื่อฟิลด์ด้วยตัวเอง ... )

https://dev.mysql.com/doc/refman/5.0/en/set-password.html


ไม่เสียใจนี่ใช้ไม่ได้: ข้อผิดพลาด 1820 (HY000): คุณต้องรีเซ็ตรหัสผ่านของคุณโดยใช้คำสั่ง ALTER USER ก่อนดำเนินการคำสั่งนี้
dengar81


7

ผู้ใช้ UPDATE SET authentication_string = PASSWORD ("MyPassWord") WHERE User = 'root'; ข้อผิดพลาด 1064 (42000): คุณมีข้อผิดพลาดในไวยากรณ์ SQL ของคุณ ตรวจสอบคู่มือที่สอดคล้องกับเวอร์ชั่นเซิร์ฟเวอร์ MySQL ของคุณเพื่อหาไวยากรณ์ที่ถูกต้องที่จะใช้ใกล้ '("MyPassWord") WHERE User =' root '' ที่บรรทัด 1

แก้ไขด้วย

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

อ้างอิงจากเว็บไซต์ด้านล่าง

https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html


5

ในVer 14.14 Distrib 5.7.19, for macos10.12 (x86_64)ฉันเข้าสู่ระบบเป็น: mysql -uroot -pจากนั้นพิมพ์รหัสผ่านที่สร้างขึ้นโดย MySQL เมื่อคุณติดตั้ง จากนั้น ..

ALTER USER 'root'@'localhost' IDENTIFIED BY '<new_password>';

ตัวอย่าง:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Ab1234'; Query OK, 0 rows affected (0.00 sec) mysql> exit Bye $ mysql -uroot -p

และคุณสามารถพิมพ์ 'Ab1234'


3

Mysql 5.7.24 รับรูทเข้าระบบครั้งแรก

ขั้นตอนที่ 1: รับรหัสผ่านจากบันทึก

 grep root@localhost /var/log/mysqld.log
    Output
        2019-01-17T09:58:34.459520Z 1 [Note] A temporary password is generated for root@localhost: wHkJHUxeR4)w

ขั้นตอนที่ 2: เข้าสู่ระบบกับเขาเพื่อ mysql

mysql -uroot -p'wHkJHUxeR4)w'

ขั้นตอนที่ 3: คุณใส่รหัสผ่านรูทใหม่

SET PASSWORD = PASSWORD('xxxxx');

คุณได้รับ ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

แก้ไขได้อย่างไร

เรียกใช้สิ่งนี้ SET GLOBAL validate_password_policy=LOW;

ลองอีกครั้ง SET PASSWORD = PASSWORD('xxxxx');



2

นี่คือวิธีการทำงานสำหรับฉัน

MySQL> show databases ;

ข้อผิดพลาด 1820 (HY000): คุณต้องรีเซ็ตรหัสผ่านโดยใช้คำสั่ง ALTER USER ก่อนดำเนินการคำสั่งนี้

MySQL> uninstall plugin validate_password;

ข้อผิดพลาด 1820 (HY000): คุณต้องรีเซ็ตรหัสผ่านโดยใช้คำสั่ง ALTER USER ก่อนดำเนินการคำสั่งนี้

MySQL> alter user 'root'@'localhost' identified by 'root';

การค้นหาตกลง 0 แถวที่ได้รับผลกระทบ (0.01 วินาที)

MySQL> flush privileges;

การค้นหาตกลง 0 แถวที่ได้รับผลกระทบ (0.03 วินาที)


1

เมื่อคุณใช้SET PASSWORD = PASSWORD('your_new_password');มันอาจมีปัญหาได้

(ข้อผิดพลาด 1819 (HY000): รหัสผ่านของคุณไม่ตรงตามข้อกำหนดของนโยบายปัจจุบัน)

. คุณสามารถใช้SET GLOBAL validate_password_policy=LOW;เพื่อ slove มัน


1

ในรุ่น 5.7 ลบฟิลด์ 'รหัสผ่าน' แล้ว 'authentication_string' แทนที่

use mysql;
update user set authentication_string=password('123456') where user='root';
flush privileges;

0

ฉันยังได้รับปัญหาเดียวกันใน mac OS X 10.10.4 (Yosemite) รหัสผ่านชุดทำงานให้ฉันรหัสผ่านเปลี่ยนสำหรับ mysql- mysql> ตั้งรหัสผ่าน = PASSWORD ('your_password'); ข้อความค้นหาตกลง, 0 แถวที่ได้รับผลกระทบ, 1 คำเตือน (0.01 วินาที)

ตั้งค่าตัวแปรพา ธ สภาวะแวดล้อม Mysql ของคุณใน. bash_profile และเพิ่มการ
ส่งออกบรรทัดด้านล่างPATH = $ PATH: / usr / local / mysql / bin หลังจากนั้นให้รันคำสั่งต่อไปนี้: source .bash_profile


0

มีปัญหาหลังจากที่ฉันติดตั้ง mysql workbench และเซิร์ฟเวอร์ชุมชน mysql มีรหัสผ่านที่สร้างขึ้นระหว่างการติดตั้งเซิร์ฟเวอร์ การคลิกสองครั้งบนอินสแตนซ์ที่มีอยู่ใน workbench ทริกเกอร์กล่องโต้ตอบที่ฉันสามารถตั้งรหัสผ่านใหม่



0

จดจำรุ่น 5.7.23 ขึ้นไป - ตารางผู้ใช้ไม่มีรหัสผ่านคอลัมน์แทนสตริงการตรวจสอบสิทธิ์ด้านล่างใช้งานได้ขณะรีเซ็ตรหัสผ่านสำหรับผู้ใช้

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