Danh sách người dùng MySQL và quản lý quyền | Hướng dẫn

1. Giới thiệu

Quản lý người dùng MySQL là một nhiệm vụ quan trọng không thể thiếu để đảm bảo an toàn và vận hành hiệu quả của cơ sở dữ liệu. Đặc biệt, việc nắm rõ người dùng nào có thể truy cập cơ sở dữ liệu và họ có những quyền gì sẽ giúp thực hiện các biện pháp hạn chế truy cập và tăng cường bảo mật. Trong bài viết này, chúng tôi sẽ giải thích rộng rãi từ cách hiển thị danh sách người dùng MySQL, cách lấy thông tin chi tiết, cách tạo và quản lý người dùng, cho đến cách xử lý các lỗi thường gặp. Nhờ đó, bạn sẽ hiểu được các nguyên tắc cơ bản và các bước thao tác thực tiễn trong quản lý người dùng MySQL.

2. Cách lấy danh sách người dùng

Để lấy danh sách người dùng trong MySQL, sử dụng bảng “mysql.user”. Bảng này chứa thông tin của tất cả người dùng đã đăng ký trong MySQL, và có thể hiển thị thông tin cần thiết bằng một lệnh đơn giản.

Cơ bản hiển thị danh sách người dùng

Đầu tiên, đăng nhập vào MySQL và thực hiện lệnh sau.
SELECT Host, User FROM mysql.user;
Lệnh này sẽ hiển thị danh sách “tên máy chủ” và “tên người dùng” của mỗi người dùng. Ví dụ, “localhost” hoặc “127.0.0.1” có thể xuất hiện như tên máy chủ, chúng tương ứng chỉ các kết nối cục bộ IPv4 và IPv6. Đây là cấu hình thường thấy trong quản lý người dùng môi trường cục bộ.

Lấy toàn bộ thông tin người dùng

Thêm nữa, để kiểm tra thông tin chi tiết hơn, bạn có thể hiển thị tất cả các cột của bảng “mysql.user” bằng lệnh sau.
SELECT * FROM mysql.user;
Lệnh này hiển thị thông tin chi tiết cho mỗi người dùng (ví dụ: thông tin xác thực và cài đặt quyền), nhưng thường thì chỉ chỉ định các cột cần thiết sẽ dễ đọc hơn. Bằng cách sử dụng như trên, bạn có thể nhận được thông tin rộng hơn, và để có đầu ra được sắp xếp trực quan, việc chọn các cột cụ thể cũng rất hữu ích.

3. Lấy thông tin chi tiết của người dùng

Trong MySQL, có thể lấy cả hàm băm mật khẩu và thông tin quyền của người dùng. Điều này giúp quản lý người dùng trở nên hiệu quả hơn.

Cách hiển thị hàm băm mật khẩu

Trong MySQL, mật khẩu được mã hoá và lưu dưới dạng hàm băm trong cột “authentication_string”. Bạn có thể kiểm tra tên máy chủ, tên người dùng và hàm băm mật khẩu của người dùng bằng lệnh dưới đây.
SELECT Host, User, authentication_string FROM mysql.user;
Kết quả này cho phép bạn kiểm tra xem mật khẩu của từng người dùng đã được thiết lập hay chưa. Giá trị hàm băm mật khẩu sẽ được hiển thị, nhưng không thể giải mã, do đó bảo mật được duy trì. Đây là cách rất tiện lợi khi kiểm tra người dùng mới hoặc trạng thái cấp quyền.

Kiểm tra quyền của người dùng cụ thể

Để kiểm tra quyền mà người dùng có trên cơ sở dữ liệu hoặc bảng, sử dụng lệnh “SHOW GRANTS”.
SHOW GRANTS FOR 'tên người dùng'@'tên máy chủ';
Lệnh này sẽ liệt kê tất cả các quyền được cấp cho người dùng đã chỉ định. Đây là lệnh hữu ích khi quản trị viên cơ sở dữ liệu quyết định cấp quyền nào cho người dùng cụ thể.

4. Tạo và quản lý người dùng

Giới thiệu cách tạo người dùng mới trong MySQL và thiết lập/điều chỉnh quyền.

Tạo người dùng mới

Khi tạo người dùng mới, sử dụng câu lệnh “CREATE USER”. Dưới đây là ví dụ tạo người dùng “example_user” và đặt mật khẩu là “password123”.
CREATE USER 'example_user'@'localhost' IDENTIFIED BY 'password123';
Sau khi tạo người dùng, cần thực thi “FLUSH PRIVILEGES” để áp dụng thay đổi trong MySQL.
FLUSH PRIVILEGES;

Lưu ý khi xóa người dùng

Để xóa người dùng không cần thiết, sử dụng lệnh “DROP USER”. Tuy nhiên, trước khi xóa, cần kiểm tra ảnh hưởng đến quyền và dữ liệu liên quan. Ví dụ, nếu người dùng sẽ bị xóa đang liên kết với các hệ thống hoặc dịch vụ khác, có thể gây mất khả năng truy cập sau khi xóa, vì vậy cần thận trọng.

5. Các lỗi thường gặp và cách khắc phục

Trong quản lý người dùng MySQL, có thể xảy ra lỗi. Ở đây chúng tôi sẽ giải thích các lỗi thường gặp và cách khắc phục chúng.

Lỗi quyền “Access denied”

“Access denied” xảy ra khi người dùng không có quyền thích hợp đối với cơ sở dữ liệu hoặc bảng. Trong trường hợp này, quản trị viên có thể cấp quyền cần thiết cho người dùng đó để giải quyết. Bạn có thể cấp quyền cho cơ sở dữ liệu cụ thể bằng lệnh sau.
GRANT ALL PRIVILEGES ON database_name.* TO 'tên người dùng'@'tên máy chủ';
FLUSH PRIVILEGES;

Lỗi xác thực người dùng “Unknown user”

“Unknown user” xảy ra khi người dùng được chỉ định không tồn tại. Khi gặp lỗi này, hãy kiểm tra xem tên người dùng và tên máy chủ đã được chỉ định đúng chưa, hoặc người dùng đó có tồn tại trong bảng “mysql.user” hay không.

Lỗi liên quan đến mật khẩu

Nếu xảy ra không khớp mật khẩu hoặc lỗi xác thực, bạn có thể giải quyết bằng cách đặt lại mật khẩu. Hãy sử dụng lệnh sau để đặt lại mật khẩu.
ALTER USER 'tên người dùng'@'tên máy chủ' IDENTIFIED BY 'mật khẩu mới';

6. Tóm tắt

Trong bài viết này, chúng tôi đã giải thích cách lấy danh sách người dùng MySQL, kiểm tra thông tin chi tiết, tạo và quản lý người dùng, cũng như các lỗi thường gặp và cách khắc phục chúng. Quản lý người dùng liên quan trực tiếp đến việc tăng cường bảo mật cơ sở dữ liệu, vì vậy việc định kỳ xem xét lại thông tin và quyền của người dùng, giảm thiểu rủi ro truy cập trái phép là rất quan trọng. Hãy sử dụng các phương pháp này để vận hành MySQL một cách an toàn và hiệu quả.