Chỉ Admin hoặc chủ sở hữu CSDL mới có thể thực hiện GRANT hoặc REVOKE quyền trên các đối tượng.
GRANT và REVOKE trong SQL
Lệnh CẤP QUYỀN trong SQL
Lệnh CẤP QUYỀN trong SQL được dùng để cho phép người dùng truy cập hoặc cấp các quyền trên đối tượng cơ sở dữ liệu.
Cú pháp lệnh CẤP QUYỀN trong SQL
Cú pháp lệnh CẤP QUYỀN trong SQL có dạng như sau:
CẤP QUYỀN privilege_name
CHO object_name
CHO {user_name |PUBLIC |role_name}
[VỚI TÙY CHỌN CẤP QUYỀN];
Trong trường hợp:
- privilege_name là quyền truy cập hoặc đặc quyền được cấp cho người dùng. Một số quyền truy cập bao gồm TẤT CẢ, THỰC HIỆN, và CHỌN.
- object_name là tên của đối tượng cơ sở dữ liệu như BẢNG, XEM, THỦ TỤC LƯU TRỮ và CHUỖI.
- user_name là tên của người dùng được cấp quyền truy cập.
- CÔNG CỘNG được sử dụng để cấp quyền truy cập cho tất cả người dùng.
- VAI TRÒ là tập hợp các đặc quyền được nhóm lại với nhau.
- VỚI TÙY CHỌN CẤP QUYỀN cho phép người dùng cấp quyền truy cập cho người dùng khác.
Ví dụ lệnh CẤP QUYỀN trong SQL
Lệnh: CẤP QUYỀN CHỌN CHO user1 TRÊN nhân_viên.
Lệnh CẤP QUYỀN trên cấp quyền CHỌN cho user1 trong bảng danh sách nhân viên. Bạn nên sử dụng tùy chọn VỚI TÙY CHỌN cẩn thận, giả sử trong trường hợp nếu sử dụng CẤP QUYỀN CHỌN cấp đặc quyền trong bảng nhân viên để user1 sử dụng tùy chọn VỚI TÙY CHỌN, thì user1 có thể cấp quyền CẤP QUYỀN CHỌN cho user khác trong bảng nhân viên, chẳng hạn như user2, ... .
Nếu RÚT LẠI quyền CHỌN từ user1, user2 vẫn có quyền CHỌN trên bảng danh sách nhân viên.
Lệnh RÚT LẠI trong SQL
Lệnh RÚT LẠI trong SQL được sử dụng để thu hồi quyền truy cập của người dùng hoặc các đặc quyền với các đối tượng cơ sở dữ liệu.
Cú pháp lệnh RÚT LẠI trong SQL
Cú pháp của lệnh RÚT LẠI trong SQL có dạng như sau:
RÚT LẠI privilege_name
TRÊN object_name
TỪ {user_name |PUBLIC |role_name}
Ví dụ về lệnh RÚT LẠI trong SQL
Lệnh: RÚT LẠI CHỌN TRÊN nhân_viên TỪ người_dùng1.
Lệnh RÚT LẠI trên sẽ thu hồi quyền CHỌN của người_dùng1 trong bảng nhân_viên.
Khi thu hồi quyền CHỌN từ người_dùng trong bảng, người_dùng đó sẽ không thể CHỌN (lựa chọn) dữ liệu từ bảng đó nữa. Tuy nhiên, nếu người_dùng nhận được các quyền CHỌN trên bảng từ nhiều người_dùng khác, họ có thể CHỌN từ bảng đó cho đến khi tất cả các người_dùng khác thu hồi quyền. Bạn không thể thu hồi các đặc quyền nếu ban đầu bạn không cấp các đặc quyền đó.
Đặc quyền và Vai trò trong SQL
Đặc quyền trong SQL
Đặc quyền (privileges) trong SQL xác định quyền truy cập được cấp cho người_dùng trong một đối tượng cơ sở dữ liệu. Có 2 loại đặc quyền trong SQL:
- Đặc quyền hệ thống: Đặc quyền này cho phép người dùng tạo các đối tượng cơ sở dữ liệu như CREATE, ALTER, hoặc DROP.
- Đặc quyền đối tượng: Đặc quyền này cho phép người dùng thao tác trên dữ liệu như EXECUTE, SELECT, INSERT, UPDATE, hoặc DELETE từ các đối tượng cơ sở dữ liệu mà các đặc quyền áp dụng.
Dưới đây là bảng danh sách một số đặc quyền hệ thống (System privileges) CREATE:
Các quy tắc này cũng áp dụng cho các đặc quyền hệ thống ALTER và DROP.
Dưới đây là bảng danh sách các đặc quyền đối tượng (object privileges):
Vai trò trong SQL
Vai trò là một bộ sưu tập các quyền hoặc khả năng truy cập. Khi có nhiều người dùng trong cơ sở dữ liệu, việc quản lý quyền cho họ trở nên phức tạp.
Do đó, việc sử dụng vai trò cho phép bạn tự động cấp hoặc thu hồi các quyền của người dùng. Bạn có thể tạo các vai trò mới hoặc sử dụng các vai trò hệ thống đã được xác định sẵn bởi hệ thống quản trị cơ sở dữ liệu.
Một số quyền được cấp cho các vai trò hệ thống bao gồm:
Tạo Vai trò trong SQL
Để tạo một vai trò trong SQL, bạn sử dụng cú pháp sau:
TẠO VAI TRÒ tên_vai_trò
[XÁC ĐỊNH BỞI mật_khẩu];
Ví dụ Vai trò trong SQL
Ví dụ 1
Để tạo một vai trò có tên là 'developer' với mật khẩu là 'pwd', bạn sử dụng cú pháp sau:
TẠO VAI TRÒ kiểm_tra
[NHẬN BIẾT BỞI mật_khẩu];
Để cấp hoặc thu hồi các quyền cho người dùng thông qua vai trò thay vì gán trực tiếp cho từng người dùng. Nếu một vai trò được xác định bằng mật khẩu, khi cấp hoặc thu hồi quyền của vai trò, bạn cần xác định vai trò bằng mật khẩu.
Bạn có thể cấp hoặc thu hồi quyền của vai trò như sau:
Ví dụ: Để cấp quyền TẠO BẢNG cho một người dùng bằng cách tạo một vai trò kiểm_tra:
Ví dụ 2
Để ban quyền TẠO BẢNG cho người dùng bằng cách tạo vai trò kiểm_tra.
Bước đầu tiên là tạo VAI TRÒ kiểm_tra:
TẠO VAI TRÒ kiểm_tra
Bước tiếp theo là cấp quyền TẠO BẢNG cho vai trò kiểm_tra. Bạn cũng có thể thêm các quyền khác cho VAI TRÒ:
GRANT TẠO BẢNG CHO kiểm_tra;
Tiếp theo, gán vai trò cho người dùng:
GRANT kiểm_tra CHO user1;
Để thu hồi quyền TẠO BẢNG từ vai trò kiểm_tra, bạn có thể viết:
THU HỒI TẠO BẢNG TỪ testing;
Cú pháp để loại bỏ một vai trò từ cơ sở dữ liệu là:
XÓA VAI_TRÒ tên_vai_trò;
Ví dụ 3
Để xóa vai trò có tên developer, bạn có thể viết:
XÓA VAI_TRÒ testing;
Trong bài viết trên Mytour vừa giới thiệu cho bạn về các lệnh GRANT, REVOKE trong SQL cũng như các đặc quyền và vai trò trong SQL. Ngoài ra bạn đọc có thể tìm và tham khảo một số bài viết khác của Mytour để tìm hiểu thêm thông tin về các lệnh TẠO, XÓA, ... các mệnh đề WHERE trong SQL, ORDER BY,...và những bài viết khác hướng dẫn về SQL nhé.