Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Ý nghĩa % trong cột host và cách đổi mật khẩu user MySQL?

Hiểu về host '%' và đổi mật khẩu user trong MySQL

Trong bảng mysql.user, cột Host xác định từ đâu user được phép kết nối. % là wildcard cho "bất kỳ host nào" (remote access), localhost chỉ cho phép kết nối local.

Kiểm tra user và host

mysql> SELECT user, host FROM mysql.user;

Kết quả mẫu:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| Bob              | %         |
| Manish           | %         |
| root             | %         |
| John             | localhost |
| mysql.session    | localhost |
+------------------+-----------+
  • Bob@%: Bob kết nối từ bất kỳ IP nào
  • John@localhost: John chỉ kết nối từ chính server MySQL

Đổi mật khẩu user

MySQL 5.7+ (khuyên dùng):

ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';

Cú pháp cũ (vẫn hoạt động):

SET PASSWORD FOR 'username'@'host' = 'new_password';

Ví dụ: Đổi mật khẩu John@localhost

mysql> SET PASSWORD FOR 'John'@'localhost' = 'John123456';
Query OK, 0 rows affected (0.35 sec)

mysql> FLUSH PRIVILEGES;

Lưu ý quan trọng

  • Phải khớp chính xác host: 'John'@'localhost' khác 'John'@'%'
  • FLUSH PRIVILEGES: Nạp lại quyền sau khi đổi mật khẩu (tự động trong ALTER USER)
  • MySQL 8.0: Mặc định dùng caching_sha2_password, client cũ cần mysql_native_password
  • Tạo user mới: CREATE USER 'user'@'%' IDENTIFIED BY 'pass';

Best Practice bảo mật

  • Tránh user@% trừ khi bắt buộc
  • Dùng user@'192.168.1.%' cho dải IP cụ thể
  • Mật khẩu mạnh, rotation định kỳ
  • Tắt tài khoản không dùng: ALTER USER 'user'@'host' ACCOUNT LOCK;