Thay đổi mật khẩu người dùng mysql bằng dòng lệnh


84

Tôi đang cố gắng cập nhật mật khẩu cho người dùng cơ sở dữ liệu bằng dòng lệnh và nó không hoạt động với tôi. Đây là mã tôi đang sử dụng:

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

Ai đó có thể cho tôi biết điều gì sai với mã này.


Bạn đang làm theo những bước nào? Đơn giản chỉ cần đặt nó vào sẽ không hoạt động. Nếu tôi nhớ không nhầm thì đó là một quy trình và mã đó.
Idris

Ah. Bạn có nhớ quy trình làm như thế nào không?
user3310572

Phần này chi tiết hơn một chút và sẽ dễ hiểu hơn vì đổi mới
..net/2007/

Câu trả lời:


115

Trong mã của bạn, hãy thử đặt mật khẩu bên trong một dấu ngoặc kép. Ngoài ra, theo tài liệu của mysql, sau đây sẽ hoạt động:

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

FLUSH PRIVILEGES;

Dòng cuối cùng là quan trọng nếu không, rất tiếc, việc thay đổi mật khẩu của bạn sẽ không có hiệu lực.

BIÊN TẬP:

Tôi đã chạy thử nghiệm tại địa phương của mình và nó hoạt động -

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

Của tôi là phiên bản 5. Bạn có thể sử dụng lệnh sau để xác định phiên bản của mình -

SHOW VARIABLES LIKE "%version%";

4
Khi tôi làm điều đó, nó trả về lỗi cú pháp gần mã thông báo không mong muốn ('
user3310572

1
Bạn đang sử dụng phiên bản mysql nào? Tôi chọn cú pháp trên từ tài liệu phiên bản 5.0. Bạn đã thử lệnh mà tôi đã đăng chưa?
hellboy

Tôi tin rằng tôi đang sử dụng một phiên bản 4.0 và vâng tôi đã thử nó
user3310572

Lệnh hoạt động tốt đối với tôi trong MySQL Ver 14.14, đảm bảo mật khẩu được đặt trong dấu ngoặc kép và mọi dấu ngoặc kép trong mật khẩu đều được thoát.
Snaver

1
Kỳ lạ thay, ngay cả sau khi đỏ bừng, vẫn không làm việc cho tôi :-( Tôi đang sử dụng Mysql5.7.18-0ubuntu0.16.04.1
coding_idiot

37

Kể từ MySQL 5.7.6, sử dụng ALTER USER

Thí dụ:

ALTER USER 'username' IDENTIFIED BY 'password';

Bởi vì:

  • SET PASSWORD ... = PASSWORD('auth_string') cú pháp không được chấp nhận kể từ MySQL 5.7.6 và sẽ bị xóa trong bản phát hành MySQL trong tương lai.

  • SET PASSWORD ... = 'auth_string'cú pháp không bị phản đối, nhưng ALTER USERbây giờ là câu lệnh ưu tiên để gán mật khẩu.


1
Điều này có đúng ngay cả khi tương tác với MySQL thông qua PHP?
oldboy

@Anthony yes iff phiên bản MySQL của bạn là> = 5.7.6
Govind Rai

tôi mới sử dụng MySQL. những gì không ALTER USER ... IDENTIFIED BY ...thực hiện chính xác? điều đó khác với UPDATE ... SET ...hoặc INSERT INTO ...như thế nào?
oldboy

1
ALTER USER ... IDENTIFIED BY ...là một câu lệnh SQL cấu hình quyền của người dùng cho cơ sở dữ liệu của bạn. UPDATEINSERTcó các chức năng khác nhau, chẳng hạn như tên gợi ý, cập nhật bản ghi và chèn bản ghi vào bảng trong cơ sở dữ liệu của bạn.
Govind Rai

2
cho lỗi trong 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

14

Lưu ý: bạn nên đăng nhập với tư cách người dùng root

 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('your password');

6

đây là câu trả lời được cập nhật cho WAMP v3.0.6

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

FLUSH PRIVILEGES;

3

Trước MySQL 5.7.6, điều này hoạt động từ dòng lệnh:

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

Tôi không có bản cài đặt mysql để thử nghiệm nhưng tôi nghĩ trong trường hợp của bạn, nó sẽ

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

2

Trong windows 10, chỉ cần thoát khỏi đăng nhập hiện tại và chạy điều này trên dòng lệnh

-> mysqladmin -u root password “newpassword”

nơi thay vì root có thể là bất kỳ người dùng nào.


1

Điều này làm việc cho tôi. Có giải pháp từ trang web MYSQL

Trong MySQL, hãy chạy các truy vấn dưới đây:

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'New_Password';

0

Kể từ MySQL 8.0.18, điều này hoạt động tốt đối với tôi

mysql> SET PASSWORD FOR 'user'@'localhost' = 'userpassword';


-1

Gốc đăng nhập của bạn nên được /usr/local/directadmin/conf/mysql.conf. Sau đó, hãy thử làm theo

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

Máy chủ là máy chủ mysql của bạn.


1
Không hoạt động. Trả về lỗi cú pháp gần mã thông báo không mong muốn ('
user3310572
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.