GRANT, REVOKE trong SQL
Các lệnh DCL trong SQL được sử dụng để thực thi bảo mật cơ sở dữ liệu trong môi trường cơ sở dữ liệu người dùng. Lệnh là 2 kiểu lệnh DCL. Để tìm hiểu rõ hơn về lệnh DCL cũng như lệnh , bạn đọc cùng tham khảo bài viết dưới đây của Zaidap.com. ...
Với các lệnh , chỉ có Admin cơ sở dữ liệu hoặc chủ sở hữu đối tượng cơ sở dữ liệu mới có thể cung cấp / xóa các đặc quyền / quyền trên một đối tượng cơ sở dữ liệu.
Lệnh
Lệnh GRANT trong SQL
Lệnh GRANT trong SQL được sử dụng để cấp quyền truy cập hoặc các đặc quyền với đối tượng cơ sở dữ liệu cho người dùng.
Cú pháp lệnh GRANT trong SQL
Cú pháp lệnh GRANT trong SQL có dạng như sau:
GRANT privilege_name
ON object_name
TO {user_name |PUBLIC |role_name}
[WITH GRANT OPTION];
Trong đó:
- 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 ALL, EXECUTE, và SELECT.
- object_name là tên của đối tượng cơ sở dữ liệu như TABLE, VIEW, STORED PROC và SEQUENCE.
- user_name là tên của người dùng được cấp quyền truy cập.
- PUBLIC được sử dụng để cấp quyền truy cập cho tất cả người dùng.
- ROLES là tập hợp các đặc quyền được nhóm lại với nhau.
- WITH GRANT OPTION 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 GRANT trong SQL
Lệnh: GRANT SELECT ON employee TO user1.
Lệnh GRANT trên cấp quyền SELECT cho user1 trong bảng danh sách nhân viên. Bạn nên sử dụng tùy chọn WITH GRANT cẩn thận, giả sử trong trường hợp nếu sử dụng GRANT SELECT cấp đặc quyền trong bảng nhân viên để user1 sử dụng tùy chọn WITH GRANT, thì user1 có thể cấp quyền GRANT SELECT cho user khác trong bảng nhân viên, chẳng hạn như user2, ... .
Nếu REVOKE quyền SELECT từ user1, user2 vẫn có quyền SELECT trên bảng danh sách nhân viên.
Lệnh REVOKE trong SQL
Lệnh REVOKE 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 REVOKE trong SQL
Cú pháp lệnh REVOKE trong SQL có dạng như sau:
REVOKE privilege_name
ON object_name
FROM {user_name |PUBLIC |role_name}
Ví dụ lệnh REVOKE trong SQL
Lệnh: REVOKE SELECT ON employee FROM user1.
Lệnh REVOKE trên sẽ thu hồi quyền SELECT của user1 trong bảng nhân viên.
Khi thu hồi quyền SELECT từ user trong bảng, user đó không thể SELECT (chọn) dữ liệu từ bảng đó nữa. Tuy nhiên nếu user nhận được các quyền SELECT trên bảng từ nhiều user khác, họ có thể SELECT từ bảng đó cho đến khi tất cả user 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 đó.
Privileges và Role trong SQL
Privileges trong SQL
Privileges (đặc quyền) 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:
- System privileges (đặ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 CREATE, ALTER, hoặc DROP.
- Object privileges (đặc quyền đối tượng): Đặc quyền này cho phép người dùng thực thi dữ liệu 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 liệt kê một số đặc quyền hệ thống (System privileges) CREATE:
Các quy tắc trên 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):
Role trong SQL
Role là tập hợp các đặc quyền hoặc quyền truy cập. Khi có nhiều người dùng trong cơ sở dữ liệu, việc cấp hoặc thu hồi quyền cho người dùng sẽ trở nên khó khăn.
Vì vậy nếu xác định role, bạn có thể cấp hoặc thu hồi các đặc quyền cho người dùng để tự động cấp hoặc thu hồi các đặc quyền. Bạn có thể tạo Role hoặc sử dụng role hệ thống được xác định trước bởi oracle.
Một số đặc quyền được cấp cho roles hệ thống, bao gồm:
Tạo Roles trong SQL
Cú pháp để tạo Role trong SQL:
CREATE ROLE role_name
[IDENTIFIED BY password];
Ví dụ Role trong SQL
Ví dụ 1
Để tạo một role tên là "developer" với mật khẩu là "pwd", cú pháp có dạng như dưới đây:
CREATE ROLE testing
[IDENTIFIED BY pwd];
Để cấp hoặc thu hồi các đặc quyền cho người dùng thông qua role chứ không phải gán một đặc quyền trực tiếp cho mỗi người dùng. Nếu một role được xác định bởi một mật khẩu, khi cấp hoặc thu hồi đặc quyền của role, bạn sẽ phải xác định role bằng mật khẩu.
Bạn có thể cấp hoặc thu hồi đặc quyền của role như dưới đây.
For example: To grant CREATE TABLE privilege to a user by creating a testing role:
Ví dụ 2
Để cấp đặc quyền CREATE TABLE cho người dùng bằng cách tạo role testing.
Bước đầu tiên là tạo Role testing:
CREATE ROLE testing
Bước tiếp theo là cấp đặc quyền CREATE TABLE cho role testing. Bạn cũng có thể thêm các đặc quyền khác cho ROLE:
GRANT CREATE TABLE TO testing;
Tiếp theo, cấp role cho người dùng:
GRANT testing TO user1;
Để thu hồi đặc quyền CREATE TABLE từ role testing, bạn có thể viết:
REVOKE CREATE TABLE FROM testing;
Cú pháp để bỏ 1 role từ cơ sở dữ liệu là:
DROP ROLE role_name;
Ví dụ 3
Để bỏ role có tên developer, bạn có thể viết:
DROP ROLE testing;
http://thuthuat.taimienphi.vn/grant-revoke-trong-sql-33413n.aspx
Trong bài viết trên Zaidap.com vừa giới thiệu cho bạn về các lệnh cũng như các đặc quyền và role 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 Zaidap.com để tìm hiểu thêm thông tin về các lệnh CREATE, DELETE, ... 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é.