Đặt lại mật khẩu gốc MySQL bằng câu lệnh ALTER USER sau khi cài đặt trên Mac


182

Tôi mới sử dụng toàn bộ trải nghiệm Mac. Gần đây tôi đã cài đặt MySQL và có vẻ như tôi phải đặt lại mật khẩu sau khi cài đặt. Nó sẽ không cho phép tôi làm bất cứ điều gì khác.

Bây giờ tôi đã thiết lập lại mật khẩu theo cách thông thường:

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

.

Thật không may, có vẻ như tôi cần thay đổi mật khẩu theo một cách khác mà tôi không biết. Có lẽ ai đó ở đây đã gặp phải vấn đề đó?

Câu trả lời:


506

Nếu đây không phảilần đầu tiên bạn thiết lập mật khẩu, hãy thử phương pháp này:

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

Và nếu bạn gặp phải lỗi sau, có khả năng cao là bạn chưa bao giờ đặt mật khẩu trước đó:

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

Để thiết lập mật khẩu của bạn lần đầu tiên :

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

Tham khảo: https://dev.mysql.com/doc/refman/5.6/en/alter-user.html


10
Cảm ơn! Thông báo lỗi rất khó hiểu từ MySQL mặc dù!
Ed.

1
Điều này làm việc cho tôi với mysql-5.7.13-osx10.11-x86_64
GiriB

1
Sau 'mysql> SET PASSWORD = PASSWORD (' your_new_password ');', tôi nhận được lỗi sau: 'ERROR 29 (HY000): Tệp' ./mysql/user.MYD 'không tìm thấy (Errcode: 2 - Không như vậy tập tin hoặc thư mục) '. Ai đó có thể giúp tôi ?
Ray Kim

3
Bạn sẽ lưu ý rằng trái với những gì MySQL gợi ý, bạn không sử dụng câu lệnh "ALTER USER", mà chỉ là "SET PASSWORD" ...
Fabien Haddadi

1
Ví dụ đầu tiên có khả năng cố gắng đặt mật khẩu cho người dùng khác so với mật khẩu bạn đang sử dụng khi gửi dòng đó. Thứ hai cố gắng đặt mật khẩu cho người dùng bạn đã sử dụng để đăng nhập vào mysql. Do đó, các công trình sau này.
Hafenkranich

129

Nếu bạn bắt đầu sử dụng mysql mysql -u root -p

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

Nguồn: http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html


1
Cảm ơn bạn! Điều này làm việc cho tôi! Tôi đang sử dụng mysql-5.7.11-osx10.10-x86_64.
LeArNr

Điều này đã làm việc; Cảm ơn! Tôi rất buồn vì mặc dù MySQL là một chương trình được sử dụng rộng rãi như vậy, nhưng không có tài liệu một cửa nào để cài đặt và khiến nó chạy nhanh.
Shatu

Cảm ơn ! Nó đã giúp tôi
Sparw

3
Sau nhiều thất vọng, một biến thể của điều này đã hoạt động trên mint 18 mysql 5.7.18:ALTER USER 'root'@'localhost' indentified WITH mysql_native_password BY 'password';
Steve

Một triệu lời cảm ơn. Đó là điều duy nhất đã làm việc cho tôi.
RandyMy

33

Tôi có vấn đề tương tự trên Mac

Đầu tiên, đăng nhập mysql với chế độ hộp cát

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

Sau đó, đặt mật khẩu

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

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

Nó làm việc cho tôi ~

thông qua: /dba/118852/your-paswssword-has-Exired-after-restart-mysql-when-updated-mysql-5-7-8-rcde


1
Có vẻ khá phức tạp khi nhớ rằng bạn phải làm điều này trước cả khi sử dụng cơ sở dữ liệu.
seba.wagner

trong cảnh báo, nó muốn bạn sử dụngSET PASSWORD FOR 'root'@'localhost' = 'XXXX';
Arsen Zahray

22

Nếu bạn sử dụng MySQL 5.7.6 trở lên:

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

Nếu bạn sử dụng MySQL 5.7.5 trở về trước:

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

Tài liệu MySQL


1
Tôi đang sử dụng MySQL 5.7.9 và điều kỳ lạ SET PASSWORD = PASSWORD('my_pass')đã làm việc với tôi. Có ý kiến ​​của những người có phiên bản gần đây hơn đề cập rằng tuyên bố này cũng có hiệu quả với họ. Mặc dù vậy, tôi đã nêu lên câu trả lời của bạn vì bạn đã tìm thấy tài liệu tham khảo cụ thể này trong các tài liệu MySQL mà không ai đề cập trước đó.
Armfoot

MySQL 8 SET PASSWORD đã ném và lỗi. NGƯỜI DÙNG đã làm việc.
Timar Ivo Batis

13

Trên MySQL 5.7.x bạn cần chuyển sang mật khẩu riêng để có thể thay đổi mật khẩu, như:

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

11

Chạy những thứ này:

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

Sau đó chạy

./mysql -u root

Nó sẽ đăng nhập. Bây giờ hãy chạy các đặc quyền FLUSH;

Sau đó thoát khỏi bảng điều khiển MySQL và thử đăng nhập. Nếu không hoạt động, hãy chạy những thứ sau:

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

Thay đổi xxxxxx thành mật khẩu mới của bạn. Sau đó thử đăng nhập lại.

Cập nhật. Xem http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Nó sẽ giải quyết vấn đề của bạn.

Nếu bạn đang ở trên orory hãy thử điều này

ALTER USER username IDENTIFIED BY password

Không, xin lỗi điều này quá không hoạt động. Ít nhất là không còn nữa. Cột 'mật khẩu' đã được đổi tên bởi Oracle, btw. Bây giờ nó được gọi là xác thực. Nhưng tôi không thể thực thi lệnh này, vì trước tiên tôi phải thay đổi mật khẩu bằng lệnh ALTER USER. Điều này thật khó chịu, vì đó không phải là cách bạn thường cập nhật mật khẩu. ALTER nên được dành riêng cho các bảng, hàm và công cụ, không thay đổi các mục trong bảng. Đó là tuyên bố Cập nhật. (xin lỗi để tán tỉnh)
dengar81

@Shivan Paw: Hai cảnh báo tôi mong đợi: mysqladmin: [Cảnh báo] Sử dụng mật khẩu trên giao diện dòng lệnh có thể không an toàn. Cảnh báo: Vì mật khẩu sẽ được gửi đến máy chủ ở dạng văn bản thuần túy, hãy sử dụng kết nối ssl để đảm bảo an toàn mật khẩu. - Tôi sẽ xem xét rằng mật khẩu được cập nhật. Và thực sự tôi có thể đăng nhập bằng mật khẩu mới. Tuy nhiên, tôi vẫn không thể chạy bất kỳ truy vấn nào, vì tôi cần cập nhật mật khẩu bằng lệnh ALTER USER :(.
dengar81

@Shivan Paw: Thử cái gì? Tôi đã thử sử dụng các lệnh bạn đề nghị. Đặt lại mật khẩu bằng lệnh ./mysqladmin (hai cảnh báo) và sau đó tiến hành chạy cập nhật trên mysql.user ... Lệnh thứ hai không thành công với thông báo "Bạn phải đặt lại mật khẩu của mình bằng ALTER USER [...]"
dengar81

Đây là giải pháp duy nhất làm việc cho tôi. nếu bạn có mật khẩu hết hạn trong phiên bản mới nhất của mysql, nó sẽ không cho phép bạn ALTER_USER hoặc SET_PASSWORD.
Aaron Henderson

7

Có thể thử nó?

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

hoặc là

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

Tùy thuộc vào truy cập mà bạn sử dụng.

(và không chắc chắn bạn nên thay đổi tên trường ...)

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


Không, xin lỗi, điều này không hoạt động: ERROR 1820 (HY000): Bạn phải đặt lại mật khẩu của mình bằng câu lệnh ALTER USER trước khi thực hiện câu lệnh này.
dengar81

7

THAY ĐỔI NGƯỜI DÙNG 'root' @ 'localhost' được xác định bởi 'new_password';

Sử dụng dòng này ...


7

CẬP NHẬT người dùng SET xác thực_ chuỗi = PASSWORD ("MyPassWord") WHERE User = 'root'; LRI 1064 (42000): Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn để biết đúng cú pháp để sử dụng gần '("MyPassWord") WHERE User =' root '' ở dòng 1

Đã giải quyết với

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

Tham khảo từ trang web dưới đây

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


5

Vào Ver 14.14 Distrib 5.7.19, for macos10.12 (x86_64), tôi đã đăng nhập với tên: mysql -uroot -psau đó nhập mật khẩu được tạo bởi MySQL khi bạn cài đặt nó. Sau đó..

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

Thí dụ:

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

Và bạn có thể nhập 'Ab1234'


3

Mysql 5.7.24 nhận root đăng nhập đầu tiên

Bước 1: lấy mật khẩu từ nhật ký

 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

Bước 2: đăng nhập với anh ta vào mysql

mysql -uroot -p'wHkJHUxeR4)w'

Bước 3: bạn đặt mật khẩu root mới

SET PASSWORD = PASSWORD('xxxxx');

bạn lấy ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

Làm thế nào để sửa nó?

chạy cái này SET GLOBAL validate_password_policy=LOW;

Thử lại SET PASSWORD = PASSWORD('xxxxx');



2

Đây là cách làm việc cho tôi.

mys> show databases ;

LRI 1820 (HY000): Bạn phải đặt lại mật khẩu bằng câu lệnh ALTER USER trước khi thực hiện câu lệnh này.

mys> uninstall plugin validate_password;

LRI 1820 (HY000): Bạn phải đặt lại mật khẩu bằng câu lệnh ALTER USER trước khi thực hiện câu lệnh này.

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

Truy vấn OK, 0 hàng bị ảnh hưởng (0,01 giây)

mys> flush privileges;

Truy vấn OK, 0 hàng bị ảnh hưởng (0,03 giây)


1

Khi bạn sử dụng SET PASSWORD = PASSWORD('your_new_password');nó có thể sụp đổ cho nó

(ERROR 1819 (HY000): Mật khẩu của bạn không đáp ứng các yêu cầu chính sách hiện tại)

.bạn có thể sử dụng SET GLOBAL validate_password_policy=LOW;để yêu nó.


1

trong phiên bản 5.7. Trường 'mật khẩu' đã bị xóa. 'xác thực_ chuỗi' thay thế nó

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

0

Tôi cũng gặp vấn đề tương tự trong mac OS X 10.10.4 (Yosemite) .SET PASSWORD hoạt động với tôi. Mật khẩu thay thế cho mysql- mysql> SET PASSWORD = PASSWORD ('your_password'); Truy vấn OK, 0 hàng bị ảnh hưởng, 1 cảnh báo (0,01 giây)

đặt biến đường dẫn môi trường Mysql của bạn trong .bash_profile và thêm dòng dưới đây
xuất PATH = $ PATH: / usr / local / mysql / bin, sau đó, chạy lệnh sau: source .bash_profile


0

Có vấn đề sau khi tôi cài đặt bàn làm việc mysql và máy chủ cộng đồng mysql. Đã tạo mật khẩu trong quá trình cài đặt máy chủ. Nhấp đúp vào thể hiện cục bộ hiện tại trong bàn làm việc đã kích hoạt hộp thoại nơi tôi có thể đặt mật khẩu mới.


0

mysql> SET PASSWORD = PASSWORD('your_new_password'); Nó ổn với tôi.


0

nhớ các phiên bản 5.7.23 trở lên - bảng người dùng không có mật khẩu cột thay vào đó là chuỗi xác thực để bên dưới hoạt động trong khi đặt lại mật khẩu cho người dùng.

update user set authentication_string=password('root') where user='root';
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.