Quên mật khẩu MySQL thì sao

Reset MySQL password

Lâu lâu không chịu nhớ mật khẩu MySQL, toàn ghi chú rồi copy - paste, giờ lỡ tay làm mất cái file lưu pass nên lại phải reset lại mật khẩu. Làm cái note này để ghi chú lại. :D

Yêu cầu để có thể thực hiện:

Bạn phải có quyền thực thi commandline trên hệ thống (1 cách nào đó trực tiếp hoặc gián tiếp) còn nếu không có quyền này thì khỏi cần đọc tiếp. (Remote qua Telnet, SSH, Netcat… hay cái gì đại loại thế - hoặc ngồi trực tiếp với hệ thống)

1. Máy chạy Windows

Bước 1. Tắt process MySQL đang chạy (nếu có)

  net stop mysql

Bước 2. Tạo 2 file

  UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root';
  FLUSH PRIVILEGES;

Một cách khác Gọn hơn chút

  cd C:\Program Files\MySQL\MySQL Server 5.0\bin
  mysqld-nt –skip-grant-tables
  mysql -uroot
  mysql>use mysql;
  mysql>update user set Password=PASSWORD(’new_pass’) WHERE User=’root’;
  mysql>flush privileges;
  Ok done.
  +mysql>exit

=> đến đây thì đã xong, mật khẩu đã được reset thành new_pass.

2. Máy chạy Linux

Trường hợp cài đặt bằng gói RPM

Bước 1. Lên quyền root Gain root access to your Linux system

[user@localhost ~]$ su -
Password:
[root@localhost user]#

Bước 2. Đầu tiên là dừng dịch vụ mysql lại First you have to stop the daemon

[root@localhost root]# /etc/init.d/mysqld stop
[root@localhost root]#

Bước 3. Nếu sử dụng RedHat, CentOS… thì dùng lệnh sau: With RedHat, Centos

[root@localhost root]# mysqld_safe --skip-grant-tables --skip-networking
[root@localhost root]#

Nếu dùng OS khác (Ubuntu…) thì thay thế services mysqld_safe thành safe_mysqld

Chạy mysql trong safe_mode mà không cần đăng nhập và bạn cũng sẽ disable networking cho mysql luôn - đề phòng bị tranh thủ tấn công).

You will now start MySQL in safe mode without reading the grant tables with all MySQL database passwords and also you will disable networking. The “safe_mysqld” command will do this trick for you.

Bước 4. Sử dụng mysqladmin sẽ reset lại password. Trong trường hợp này ta phải sử dụng lệnh sau để set 1 pass mới.

The “mysqladmin” command will now reset[rewrite] the root password. In this case we are setting it to “newpassword”.

[root@localhost root]# mysqladmin -u root flush-privileges password "newpassword"
[root@localhost root]#

Bước 5. Dừng chạy chế độ mysql_safe Stop the running daemon

kill 'cat /var/run/mysqld/mysqld.pid'

Bước 6. Cuối cùng khởi động lại dịch vụ mysql And finally restart it

[root@localhost root]# /etc/init.d/mysqld start
[root@localhost root]#

Bước 7. Bây giờ thì dùng password mới You can use now your new root password

[root@localhost root]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.0.20-standard

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Đến đây là xong.

Trường hợp cài thông qua source

Tìm thư mục cài đặt Mysql và tìm thư mục libexec bên trong nó. Bạn chạy lệnh:

[root@localhosthost libexec]./mysqld stop
[root@localhosthost libexec]./mysqld --skip-grant-tables --user=root

Sau đó có thể tiến hành đăng nhập không cần password và reset password như trên Windows.