Cách Liệt Kê Người Dùng MySQL: Truy Vấn mysql.user và Kiểm Tra Quyền

.

1. Tổng quan về Người dùng MySQL

Quản lý người dùng MySQL là một khía cạnh quan trọng của bảo mật và vận hành cơ sở dữ liệu. Quản lý người dùng đúng cách giúp ngăn ngừa truy cập trái phép và cải thiện hiệu suất hoạt động bằng cách gán các đặc quyền phù hợp. Trong bài viết này, chúng tôi sẽ giải thích chi tiết cách thông tin người dùng MySQL được lưu trữ và cách bạn có thể hiển thị danh sách người dùng.

1.1 Tại sao Quản lý Người dùng MySQL lại Quan trọng

Vì các cơ sở dữ liệu lưu trữ thông tin nhạy cảm, việc quản lý người dùng đúng đắn là thiết yếu. Bằng cách cấu hình chi tiết các đặc quyền truy cập cho từng người dùng, bạn có thể tăng cường bảo mật và duy trì tính toàn vẹn của dữ liệu.

2. MySQL Lưu trữ Thông tin Người dùng ở Đâu

Thông tin người dùng MySQL được lưu trong bảng user nằm trong cơ sở dữ liệu mysql. Bảng này chứa nhiều chi tiết liên quan đến người dùng như tên người dùng, tên máy chủ, mật khẩu (đã mã hoá) và các plugin xác thực.

2.1 Cấu trúc của Bảng mysql.user

Bảng mysql.user có rất nhiều cột, mỗi cột lưu trữ một loại thông tin khác nhau về người dùng. Các cột bao gồm:

  • Host : Tên máy chủ mà người dùng được phép kết nối
  • User : Tên người dùng
  • Password : Mật khẩu đã mã hoá
  • plugin : Loại plugin xác thực
  • Các thiết lập bảo mật khác

Để truy cập bảng này, bạn cần có đặc quyền root hoặc đặc quyền SELECT trên mysql.user.

3. Cách Lấy Danh sách Người dùng MySQL

Để truy xuất danh sách người dùng MySQL, bạn cần truy vấn bảng mysql.user. Dưới đây, chúng tôi sẽ giải thích từ truy vấn cơ bản để liệt kê người dùng cho đến cách hiển thị mật khẩu đã mã hoá.

3.1 Truy vấn Cơ bản để Liệt kê Người dùng

Đầu tiên, đây là truy vấn cơ bản để lấy danh sách người dùng từ bảng mysql.user.

SELECT Host, User FROM mysql.user;

Khi bạn chạy truy vấn này, nó sẽ hiển thị danh sách tất cả người dùng và các máy chủ tương ứng của họ.

3.2 Hiển thị Mật khẩu Đã Mã hoá

Để lấy danh sách bao gồm mật khẩu đã mã hoá, sử dụng truy vấn sau.

SELECT Host, User, Password FROM mysql.user;

Truy vấn này hiển thị tên máy chủ, tên người dùng và mật khẩu đã mã hoá. Tuy nhiên, vì mật khẩu đã được mã hoá, bạn không thể xác định mật khẩu thực tế từ giá trị này.

4. Truy xuất Thông tin Người dùng Khác

Trong MySQL, bạn có thể truy xuất thêm thông tin về người dùng. Đặc biệt, việc kiểm tra đặc quyền người dùng và xác định người dùng hiện đang kết nối là rất hữu ích.

4.1 Kiểm tra Đặc quyền Người dùng

Để kiểm tra các đặc quyền được gán cho mỗi người dùng, sử dụng câu lệnh SHOW GRANTS.

SHOW GRANTS FOR 'username'@'host';

Lệnh này hiển thị tất cả các đặc quyền đã cấp cho người dùng được chỉ định. Quản lý đặc quyền người dùng một cách hợp lý giúp tăng cường bảo mật cơ sở dữ liệu.

4.2 Kiểm tra Người dùng Đang Kết nối Hiện tại

Để kiểm tra thông tin về người dùng hiện đang kết nối, sử dụng các hàm user()current_user().

SELECT user(), current_user();

Truy vấn này trả về tên người dùng được chỉ định khi kết nối và tên người dùng thực tế đã được xác thực. Trong hầu hết các trường hợp, chúng giống nhau, nhưng có thể khác nhau trong một số tình huống như khi sử dụng người dùng ẩn danh.

5. Ví dụ Thực tế

Tiếp theo, đây là một ví dụ thực tế về cách hiển thị danh sách người dùng trong MySQL.

5.1 Các bước để Hiển thị Danh sách Người dùng

  1. Đăng nhập vào MySQL. Trong ví dụ này, chúng ta sẽ sử dụng người dùng root. mysql -u root -p
  2. Chạy truy vấn sau để hiển thị danh sách người dùng. SELECT Host, User FROM mysql.user;
  3. Nếu muốn hiển thị danh sách kèm mật khẩu đã mã hoá, sử dụng truy vấn sau. SELECT Host, User, Password FROM mysql.user;

5.2 Kiểm tra Đặc quyền

Để kiểm tra các đặc quyền cho một người dùng cụ thể, sử dụng câu lệnh SHOW GRANTS.

SHOW GRANTS FOR 'tanaka'@'localhost';

Lệnh này hiển thị các đặc quyền đã cấp cho người dùng tanaka.

6. Các Thực hành Tốt nhất cho Quản lý Người dùng MySQL

Khi quản lý người dùng MySQL, việc tuân thủ một số thực hành tốt nhất là rất quan trọng.

.### 6.1 Xem lại danh sách người dùng thường xuyên

Chúng tôi khuyến nghị kiểm tra định kỳ bảng mysql.user để đảm bảo không có người dùng không cần thiết và không có người dùng nào được gán quyền không chính xác.

6.2 Sử dụng mật khẩu mạnh

Đảm bảo mỗi người dùng có mật khẩu mạnh và phức tạp. Điều này giảm nguy cơ truy cập trái phép.

6.3 Cấp quyền tối thiểu cần thiết

Giữ quyền của người dùng ở mức tối thiểu cần thiết và chỉ cho phép các thao tác cần thiết. Điều này cải thiện bảo mật tổng thể của cơ sở dữ liệu.

7. Tóm tắt

Trong bài viết này, chúng tôi đã giải thích chi tiết về quản lý người dùng MySQL. Hiểu được nơi lưu trữ thông tin người dùng và cách liệt kê chúng là quan trọng để duy trì bảo mật cơ sở dữ liệu. Ngoài ra, biết cách kiểm tra quyền của người dùng và chi tiết kết nối giúp bạn quản lý MySQL hiệu quả hơn.