Chỉ cú người sở hữu cơ sở dữ liệu hoặc người sở hữu đối tượng cơ sở dữ liệu mới cú thể cấp phỏt quyền cho người dựng trờn cỏc đối tượng cơ sở dữ liệu. Cõu lệnh GRANT trong trường hợp này cú cỳ phỏp như sau:
GRANT ALL [PRIVILEGES]| cỏc_quyền_cấp_phỏt
[(danh_sỏch_cột)] ON tờn_bảng | tờn_khung_nhỡn
|ON tờn_bảng | tờn_khung_nhỡn [(danh_sỏch_cột)] |ON tờn_thủ_tục
|ON tờn_hàm
TO danh_sỏch_người_dựng | nhúm_người_dựng
[WITH GRANT OPTION ]
Trong đú:
ALL [PRIVILEGES] Cấp phỏt tất cả cỏc quyền cho người dựng trờn đối tượng cơ sở dữ liệu được chỉ định. Cỏc quyền cú thể
cấp phỏt cho người dựng bao gồm:
• Đối với bảng, khung nhỡn, và hàm trả về dữ
liệu kiểu bảng: SELECT, INSERT, DELETE, UPDATE và REFERENCES.
• Đối với cột trong bảng, khung nhỡn: SELECT và UPDATE.
• Đối với thủ tục lưu trữ và hàm vụ hướng: 97
Khoa CNTT - Trường ĐHKH Huế Giỏo trỡnh SQL
EXECUTE.
Trong cỏc quyền được đề cập đến ở trờn, quyền REFERENCES được sử dụng nhằm cho phộp tạo khúa ngoài tham chiếu đến bảng cấp phỏt.
cỏc_quyền_cấp_phỏt tờn_bảng|tờn_khung_nhỡn danh_sỏch_cột tờn_thủ_tục tờn_hàm danh_sỏch_người_dựng
WITH GRANT OPTION
Danh sỏch cỏc quyền cần cấp phỏt cho người dựng trờn đối tượng cơ sở dữ liệu được chỉđịnh. Cỏc quyền
được phõn cỏch nhau bởi dấu phẩy
Tờn của bảng hoặc khung nhỡn cần cấp phỏt quyền. Danh sỏch cỏc cột của bảng hoặc khung nhỡn cần cấp phỏt quyền.
Tờn của thủ tục được cấp phỏt cho người dựng. Tờn hàm (do người dựng định nghĩa) được cấp phỏt quyền.
Danh sỏch tờn người dựng nhận quyền được cấp phỏt. Tờn của cỏc người dựng được phõn cỏch nhau bởi dấu phẩy.
Cho phộp người dựng chuyển tiếp quyền cho người dựng khỏc.
Cỏc vớ dụ dưới đõy sẽ minh hoạ cho ta cỏch sử dụng cõu lệnh GRANT để cấp phỏt quyền cho người dựng trờn cỏc đối tượng cơ sở dữ liệu.
Vớ dụ 4.1: Cấp phỏt cho người dựng cú tờn thuchanh quyền thực thi cỏc cõu lệnh SELECT, INSERT và UPDATE trờn bảng LOP
GRANT SELECT,INSERT,UPDATE ON lop
TO thuchanh
Cho phộp người dựng thuchanh quyền xem họ tờn và ngày sinh của cỏc sinh viờn (cột HODEM,TEN và NGAYSINH của bảng SINHVIEN)
GRANT SELECT (hodem,ten,ngaysinh) ON sinhvien TO thuchanh hoặc: GRANT SELECT ON sinhvien(hodem,ten,ngaysinh) TO thuchanh 98
Khoa CNTT - Trường ĐHKH Huế Giỏo trỡnh SQL
Với quyền được cấp phỏt như trờn, người dựng thuchanh cú thể thực hiện cõu lệnh sau trờn bảng SINHVIEN
SELECT hoden,ten,ngaysinh FROM sinhvien
Nhưng cõu lệnh dưới đõy lại khụng thể thực hiện được
SELECT * FROM sinhvien
Trong trường hợp cần cấp phỏt tất cả cỏc quyền cú thể thực hiện được trờn đối tượng cơ sở dữ liệu cho người dựng, thay vỡ liệt kờ cỏc cõu lệnh, ta chỉ cần sử dụng từ khoỏ ALL PRIVILEGES (từ khúa PRIVILEGES cú thể khụng cần chỉđịnh). Cõu lệnh dưới
đõy cấp phỏt cho người dựng thuchanh cỏc quyền SELECT, INSERT, UPDATE, DELETE VÀ REFERENCES trờn bảng DIEMTHI
GRANT ALL ON DIEMTHI TO thuchanh
Khi ta cấp phỏt quyền nào đú cho một người dựng trờn một đối tượng cơ sở dữ
liệu, người dựng đú cú thể thực thi cõu lệnh được cho phộp trờn đối tượng đó cấp phỏt. Tuy nhiờn, người dựng đú khụng cú quyền cấp phỏt những quyền mà mỡnh được phộp cho những người sử dụng khỏc.Trong một số trường hợp, khi ta cấp phỏt quyền cho một người dựng nào đú, ta cú thể cho phộp người đú chuyển tiếp quyền cho người dựng khỏc bằng cỏch chỉđịnh tuỳ chọn WITH GRANT OPTION trong cõu lệnh GRANT.
Vớ dụ 4.2: Cho phộp người dựng thuchanh quyền xem dữ liệu trờn bảng SINHVIEN
đồng thời cú thể chuyển tiếp quyền này cho người dựng khỏc
GRANT SELECT ON sinhvien TO thuchanh
WITH GRANT OPTION