How to reset root password in MySQL 8

  sonic0002        2018-12-24 21:27:13       61,002        5          English  简体中文  繁体中文  ภาษาไทย  Tiếng Việt 

Mật khẩu người dùng trong MySQL được lưu trữ trong bảng user, việc đặt lại mật khẩu thực chất là thay đổi giá trị của bản ghi trong bảng này. Để thay đổi mật khẩu trong trường hợp quên mật khẩu, ý tưởng là bỏ qua xác thực của MySQL và truy cập vào hệ thống, sau đó cập nhật giá trị mật khẩu bản ghi bằng lệnh SQL.

Trong MySQL 5, người ta có thể khởi động dịch vụ MySQL với tùy chọn --skip-grant-tables, tùy chọn này sẽ yêu cầu dịch vụ bỏ qua việc tải các bảng cấp quyền khi khởi động, do đó người dùng root có thể đăng nhập bằng mật khẩu trống.

mysqld –skip-grant-tables

 Sau khi đăng nhập, có thể chạy lệnh SQL bên dưới để thay đổi mật khẩu

UPDATE user SET authentication_string='' WHERE user='root';

Thao tác này sẽ đặt mật khẩu thành trống.

Tuy nhiên, có vẻ như --skip-grant-tables không thể hoạt động bình thường nếu không có một số điều chỉnh trong MySQL 8.  Vậy chúng ta có thể làm gì? Có hai tùy chọn khả thi.

  1. Tạo một file init và chạy dịch vụ MySQL với tùy chọn --init-file. Trong file init, đặt lệnh SQL để cập nhật giá trị mật khẩu.
  2. Tìm hiểu sâu về cách sử dụng --skip-grant-tables trong MySQL 8.

Hãy xem các tùy chọn này hoạt động như thế nào.

Tùy chọn 1: Tùy chọn --init-file

Tùy chọn này sẽ chỉ định một file chứa lệnh SQL sẽ được thực thi trước khi dịch vụ khởi động. Do đó, chúng ta chỉ cần đặt lệnh cập nhật mật khẩu vào file này và khởi động dịch vụ MySQL với tùy chọn này. Mật khẩu sẽ được đặt lại/cập nhật.

Bước 1: Dừng dịch vụ MySQL

net stop mysql

Bước 2: Tạo một file txt và đặt lệnh bên dưới vào

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

Bước 3: Khởi động dịch vụ trên dòng lệnh và với tùy chọn --init-file

mysqld --init-file=/some/path/to/cmd.txt --console

Vậy là xong. Lưu ý: vui lòng chạy lệnh với tư cách người dùng có đặc quyền khi bạn gặp lỗi từ chối quyền. Nếu bạn thấy các lỗi như:

2018-12-25T02:51:23.739089Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.13) starting as process 1912
2018-12-25T02:51:23.759426Z 1 [ERROR] [MY-011011] [Server] Failed to find valid data directory.
2018-12-25T02:51:23.761196Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2018-12-25T02:51:23.762550Z 0 [ERROR] [MY-010119] [Server] Aborting
2018-12-25T02:51:23.766230Z 0 [System] [MY-010910] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.13)  MySQL Community Server - GPL.

Vui lòng chạy lệnh bên dưới để khởi tạo thư mục dữ liệu

mysqld --initialize --console

Tùy chọn 2: Sử dụng tùy chọn --skip-grant-tables

Ngược lại với MySQL 5, một số tùy chọn khác cần được thêm vào trong MySQL 8. 

mysqld --console --skip-grant-tables --shared-memory

Sau khi khởi động dịch vụ, đăng nhập bằng mật khẩu trống

mysql -u root

Sau đó thực thi lệnh SQL để cập nhật mật khẩu

UPDATE mysql.user SET authentication_string='' WHERE user='root' and host='localhost';

Thông thường, tùy chọn 1 được khuyến nghị. Và hy vọng những điều này sẽ giúp ích.

MYSQL  PASSWORD  MYSQL 8 

       

  RELATED


  5 COMMENTS


Anonymous [Reply]@ 2019-02-07 02:38:18

2019-02-07T08:33:35.790267Z 0 [System] [MY-010116] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysqld 8.0.14) starting as process 9932
2019-02-07T08:33:35.793300Z 0 [Warning] [MY-010091] [Server] Can't create test file C:\Program Files\MySQL\MySQL Server 8.0\data\DESKTOP-7CTR7J5.lower-test
2019-02-07T08:33:35.793361Z 0 [Warning] [MY-010091] [Server] Can't create test file C:\Program Files\MySQL\MySQL Server 8.0\data\DESKTOP-7CTR7J5.lower-test
2019-02-07T08:33:35.793534Z 0 [ERROR] [MY-013276] [Server] Failed to set datadir to 'C:\Program Files\MySQL\MySQL Server 8.0\data\' (OS errno: 2 - No such file or directory)
2019-02-07T08:33:35.807438Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-02-07T08:33:35.807626Z 0 [System] [MY-010910] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe: Shutdown complete (mysqld 8.0.14)  MySQL Community Server - GPL.

Hi! Thanks for the guide. I am getting this error tho.  Grateful for your help.

Ke Pi [Reply]@ 2019-02-07 10:09:45

Can you create 'C:\Program Files\MySQL\MySQL Server 8.0\data directory and try again? 

jamil [Reply]@ 2019-04-12 20:18:53

I tried the first option. Now my old password AND new password both don't work... Worst comes to worst. I'm just going to delete mysql, and re-download it...

Nikhil Karanjkar [Reply]@ 2019-10-12 10:45:05

This saved my day. Thank you

Anonymous [Reply]@ 2019-10-24 14:08:56

Tested directly Option2 and it worked.

 


  RANDOM FUN

Concurrency Programming with Ruby