Site logo

MySQL User Management: Password, Privileges và Root Account

5:00 read

MySQL User Management là gì và vì sao quan trọng?

Trong hệ thống database thực tế, vấn đề không chỉ là "query chạy đúng" mà còn là "ai được phép chạy query nào". Đó chính là phạm vi của MySQL user management: quản lý danh tính (user account), xác thực (authentication), phân quyền (authorization), và kiểm soát truy cập theo nguyên tắc least privilege.

Khi team phát triển mở rộng, bạn thường có nhiều actors truy cập database:

  • Ứng dụng backend (service account).
  • Developer truy cập môi trường local/dev.
  • DevOps hoặc DBA vận hành production.
  • Job/batch process, BI tools, migration tools.

Nếu tất cả dùng chung một tài khoản có quyền cao (thường là root), hệ thống sẽ đối mặt với rủi ro lớn:

  • Lộ credential dẫn đến mất toàn bộ dữ liệu.
  • Một lỗi thao tác có thể DROP nhầm table quan trọng.
  • Không truy vết được ai đã làm gì vì dùng chung account.

Vì vậy, quản lý user trong MySQL là một phần cốt lõi của database security, compliance và reliability.

MySQL user management workflow

Các khái niệm cốt lõi: User, Host, Authentication, Privileges

User trong MySQL không chỉ là username

Một account trong MySQL được định danh bởi cặp:

  • User
  • Host

Ví dụ:

  • 'app_user'@'localhost'
  • 'app_user'@'10.%'
  • 'app_user'@'%'

Ba account này có thể có password và quyền khác nhau. Đây là điểm nhiều người mới dễ nhầm: cùng username nhưng host khác nhau là account khác nhau.

Authentication plugin

MySQL 8.0 mặc định dùng caching_sha2_password (an toàn hơn mysql_native_password trong đa số trường hợp). Khi tạo user, bạn có thể chỉ định plugin để phù hợp client library hiện tại.

Privileges và scope

Quyền có thể cấp ở các mức:

  • Global (*.*)
  • Database (db_name.*)
  • Table (db_name.table_name)
  • Column (cụ thể từng cột)
  • Routine (procedure/function)

Best practice là cấp quyền ở scope nhỏ nhất cần thiết để giảm blast radius khi credential bị lộ.

Yêu cầu đăng nhập

Vui lòng đăng nhập để truy cập nội dung này

Additional Resources

Course Guide

Comprehensive PDF guide with examples

GitHub Repository

Example code for all lessons

Discussion

Have a question about this lesson? Post it here and get answers from instructors and peers.