Làm cách nào để thiết lập lại hoặc khôi phục mật khẩu tài khoản quản trị viên cho MySQL?


14

Tôi có một cơ sở dữ liệu MySQL mà tôi "kế thừa" và tôi không được cung cấp thông tin đăng nhập của quản trị viên. Tuy nhiên tôi có quyền truy cập vào hộp mà nó chạy. Có cách nào để khôi phục thông tin đăng nhập của quản trị viên hoặc tạo thông tin đăng nhập mới không?

Câu trả lời:


15

Đọc và thực hiện chương về cách đặt lại mật khẩu gốc trong Hướng dẫn tham khảo MySQL.

Quy trình này khởi động trình nền mysql mà không được phép cho phép bạn kết nối mà không cung cấp thông tin đăng nhập. Trong chế độ này, bạn có thể kết nối bình thường và đặt lại mật khẩu và trợ cấp. Sau đó, đừng quên khởi động lại mysql với sự cho phép thích hợp.


6

Nếu đây là hộp Debian / Ubuntu, có một tài khoản tương đương gốc đặc biệt gọi là debian-sys-duy trì . Bạn có thể đọc mật khẩu trong /etc/mysql/debian.cnf

Sử dụng mật khẩu đó, bạn có thể đăng nhập vào mysql dưới dạng debian-sys-duy trì bằng cách sử dụng:

mysql --defaults-file=/etc/mysql/debian.cnf mysql

Khi bạn đã đăng nhập, hãy làm như sau:

update user set password=password('<new password>') where user='root';
flush privileges;
quit;

bây giờ có thể truy cập root bằng mật khẩu mới của bạn:

mysql -uroot -p

3

Người dùng root của tôi không tồn tại. Trên

CREATE USER root@localhost;

tôi đã nhận

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

Giải pháp là

mysqld_safe  --skip-grant-tables &
mysql
INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword');
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;

Sau đó tôi đã thêm từng người một với một chút giúp đỡ từ việc này:

mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N

(và cái này có thể và nên được tự động hóa nhiều hơn)

Lưu ý: việc tìm đúng số 'Y' trong INSERTlà PITA.


0

Vì các bước trong Hướng dẫn tham khảo MySQL không rõ ràng lắm, tôi đang cố gắng trả lời ở đây bằng ngôn ngữ dễ dàng hơn. (câu trả lời này có liên quan đến người dùng MacBook OSX):

  1. Vì chúng tôi không biết mật khẩu hiện tại, máy chủ MySQL cần chạy bỏ qua / bỏ qua thông tin đăng nhập hiện tại. Hướng dẫn máy chủ MySQL bỏ qua bảng cấp quyền truy cập bằng cách:
    • Dừng máy chủ MySQL của bạn (nếu nó đang chạy).
    • Tìm tập tin cấu hình MySQL của bạn , my.cnf. (Đối với tôi, nó được đặt @ /Applications/XAMPP/xamppfiles/etc. Bạn chỉ có thể tìm kiếm nếu bạn không thể tìm thấy nó).
    • Mở my.cnftệp trong bất kỳ trình soạn thảo văn bản.
    • Thêm "skip-grant-tables"(không có dấu ngoặc kép) ở cuối [mysqld]phần và lưu tệp.
    • Bây giờ bắt đầu máy chủ MySQL của bạn. Nó sẽ bắt đầu với skip-grant-tablestùy chọn.
  2. Mở Terminalvà chạy mysqllệnh
  3. Thực thi lệnh mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
  4. Thực thi lệnh mysql> FLUSH PRIVILEGES;
  5. Thực thi lệnh mysql> exit
  6. Khởi động lại máy chủ MySQL.
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.