ภาษาควบคุมข้อมูล (DCL) สำหรับการอนุญาตฐานข้อมูล
NS ภาษาควบคุมข้อมูล เป็นสับเซตของภาษาคิวรีที่มีโครงสร้าง ผู้ดูแลระบบฐานข้อมูลใช้ DCL เพื่อกำหนดค่าการเข้าถึงความปลอดภัยไปยังฐานข้อมูลเชิงสัมพันธ์ มันเติมเต็ม ภาษานิยามข้อมูลซึ่งเพิ่มและลบวัตถุฐานข้อมูลและ ภาษาการจัดการข้อมูล ซึ่งเรียกค้น แทรก และแก้ไขเนื้อหาของฐานข้อมูล
DCL เป็นชุดย่อยของ SQL ที่ง่ายที่สุด เนื่องจากประกอบด้วยสามคำสั่งเท่านั้น: GRANT, REVOKE และ DENY เมื่อรวมกันแล้ว คำสั่งทั้งสามนี้จะช่วยให้ผู้ดูแลระบบมีความยืดหยุ่นในการตั้งค่าและลบการอนุญาตฐานข้อมูลแบบละเอียด
การเพิ่มสิทธิ์ด้วยคำสั่ง GRANT
คำสั่ง GRANT เพิ่มสิทธิ์ใหม่ให้กับผู้ใช้ฐานข้อมูล มีไวยากรณ์ที่ง่ายมาก กำหนดไว้ดังนี้:
แกรนท์ [สิทธิพิเศษ]
เปิด [วัตถุ]
ถึง [ผู้ใช้]
[พร้อมตัวเลือกทุน]
นี่คือบทสรุปของพารามิเตอร์แต่ละตัวที่คุณสามารถระบุได้ด้วยคำสั่งนี้:
- สิทธิพิเศษ — สามารถเป็นได้ทั้งคีย์เวิร์ด ALL (เพื่อให้สิทธิ์ที่หลากหลาย) หรือสิทธิ์ฐานข้อมูลเฉพาะหรือชุดของสิทธิ์ ตัวอย่าง ได้แก่ CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE และ CREATE VIEW
-
วัตถุ — สามารถเป็นวัตถุฐานข้อมูลใด ๆ ตัวเลือกสิทธิ์ใช้งานที่ถูกต้องจะแตกต่างกันไปตามประเภทของวัตถุฐานข้อมูลที่คุณรวมไว้ในส่วนคำสั่งนี้ โดยปกติวัตถุจะเป็นฐานข้อมูล ฟังก์ชัน
- ผู้ใช้ — สามารถเป็นผู้ใช้ฐานข้อมูลใด ๆ คุณยังสามารถแทนที่บทบาทสำหรับผู้ใช้ในข้อนี้ หากคุณต้องการใช้การรักษาความปลอดภัยฐานข้อมูลตามบทบาท
- หากคุณรวมตัวเลือก ด้วยตัวเลือกทุน ที่ส่วนท้ายของคำสั่ง GRANT คุณไม่เพียงแต่ให้สิทธิ์แก่ผู้ใช้ที่ระบุเท่านั้น กำหนดไว้ในคำสั่ง SQL แต่ยังให้สิทธิ์ผู้ใช้ในการอนุญาตสิ่งเหล่านั้นเพิ่มเติมอีกด้วย สิทธิ์ในการ อื่น ๆ ผู้ใช้ฐานข้อมูล ด้วยเหตุผลนี้ โปรดใช้ประโยคนี้อย่างระมัดระวัง
ตัวอย่างเช่น สมมติว่าคุณต้องการให้ผู้ใช้ โจ ความสามารถในการดึงข้อมูลจาก พนักงาน ตารางใน a ฐานข้อมูล เรียกว่า HR. ใช้คำสั่ง SQL ต่อไปนี้:
GRANT SELECT
ON HR.พนักงาน
ถึงโจ
โจสามารถดึงข้อมูลจากตารางพนักงาน อย่างไรก็ตาม เขาจะไม่สามารถให้สิทธิ์ผู้ใช้รายอื่นในการดึงข้อมูลจากตารางนั้นได้ เนื่องจากสคริปต์ DCL ไม่ได้รวมส่วนคำสั่ง WITH GRANT OPTION
เพิกถอนการเข้าถึงฐานข้อมูล
คำสั่ง REVOKE จะลบการเข้าถึงฐานข้อมูลจากผู้ใช้ที่ได้รับสิทธิ์การเข้าถึงดังกล่าวก่อนหน้านี้ ไวยากรณ์สำหรับคำสั่งนี้ถูกกำหนดดังนี้:
เพิกถอน [ตัวเลือกการอนุญาตสำหรับ] [การอนุญาต]
เปิด [วัตถุ]
จาก [ผู้ใช้]
[น้ำตก]
นี่คือบทสรุปเกี่ยวกับพารามิเตอร์สำหรับคำสั่ง REVOKE:
- การอนุญาต — ระบุการอนุญาตฐานข้อมูลเพื่อลบออกจากผู้ใช้ที่ระบุ คำสั่งเพิกถอนทั้งการยืนยัน GRANT และ DENY ที่ทำไว้ก่อนหน้านี้สำหรับการอนุญาตที่ระบุ
- วัตถุ — สามารถเป็นวัตถุฐานข้อมูลใด ๆ ตัวเลือกสิทธิ์ใช้งานที่ถูกต้องจะแตกต่างกันไปตามประเภทของวัตถุฐานข้อมูลที่คุณรวมไว้ในส่วนคำสั่งนี้ โดยทั่วไป วัตถุจะเป็นฐานข้อมูล ฟังก์ชัน ขั้นตอนการจัดเก็บ ตาราง หรือมุมมอง
- ผู้ใช้ — สามารถเป็นผู้ใช้ฐานข้อมูลใด ๆ คุณยังสามารถแทนที่บทบาทสำหรับผู้ใช้ในข้อนี้ หากคุณต้องการใช้การรักษาความปลอดภัยฐานข้อมูลตามบทบาท
- NS ให้ตัวเลือกสำหรับ ส่วนคำสั่งลบความสามารถของผู้ใช้ที่ระบุในการให้สิทธิ์ที่ระบุแก่ผู้ใช้รายอื่น หากคุณรวม ให้ตัวเลือกสำหรับ ข้อในคำสั่ง REVOKE การอนุญาตหลักจะไม่ถูกเพิกถอน ข้อนี้เพิกถอนเฉพาะความสามารถในการอนุญาต
- NS น้ำตก ตัวเลือกยังเพิกถอนการอนุญาตที่ระบุจากผู้ใช้ใด ๆ ที่ผู้ใช้ที่ระบุให้สิทธิ์
คำสั่งต่อไปนี้เพิกถอนการอนุญาตที่มอบให้กับ Joe ในตัวอย่างก่อนหน้านี้:
เพิกถอนการเลือก
ON HR.พนักงาน
จากโจ.
การปฏิเสธการเข้าถึงฐานข้อมูลโดยชัดแจ้ง
คำสั่ง DENY ป้องกันผู้ใช้จากการได้รับอนุญาตอย่างชัดแจ้ง คุณลักษณะนี้มีประโยชน์เมื่อผู้ใช้เป็นสมาชิกของบทบาทหรือกลุ่มที่ได้รับสิทธิ์ และคุณต้องการป้องกันไม่ให้ผู้ใช้แต่ละรายรับช่วงสิทธิ์โดยการสร้างข้อยกเว้น ไวยากรณ์สำหรับคำสั่งนี้มีดังต่อไปนี้:
ปฏิเสธ [การอนุญาต]
เปิด [วัตถุ]
ถึง [ผู้ใช้]
พารามิเตอร์สำหรับคำสั่ง DENY จะเหมือนกับพารามิเตอร์ที่ใช้สำหรับคำสั่ง GRANT ตัวอย่างเช่น หากคุณต้องการให้แน่ใจว่าแมทธิวไม่มีวันได้รับความสามารถในการลบข้อมูลออกจากตารางของพนักงาน ให้ออกคำสั่งต่อไปนี้:
ปฏิเสธ ลบ
ON HR.พนักงาน
ถึงแมทธิว