ภาษาควบคุมข้อมูล (DCL)

GRANT, REVOKE และ DENY สิทธิ์ในฐานข้อมูล

ภาษาควบคุมข้อมูล (DCL) เป็นเซตย่อยของ Structured Query Language (SQL) และช่วยให้ผู้ดูแลระบบฐานข้อมูลสามารถกำหนดค่าการรักษาความปลอดภัยในการเข้าถึงฐานข้อมูลเชิงสัมพันธ์ เป็นภาษาคำอธิบายข้อมูล (DDL) ซึ่งใช้ในการเพิ่มและลบอ็อบเจ็กต์ฐานข้อมูลและ Data Manipulation Language (DML) ที่ใช้ดึงข้อมูลแทรกและแก้ไขเนื้อหาของฐานข้อมูล

DCL เป็น ชุดย่อยที่ ง่ายที่สุดของ SQL เนื่องจากประกอบด้วยคำสั่งสามคำสั่งเท่านั้นคือ GRANT, REVOKE และ DENY คำสั่งทั้งสามชุดนี้ช่วยให้ผู้ดูแลระบบมีความยืดหยุ่นในการตั้งค่าและลบสิทธิ์ในฐานข้อมูลในรูปแบบที่ละเอียดมาก

การเพิ่มสิทธิ์ด้วยคำสั่ง GRANT

คำสั่ง GRANT ใช้สำหรับผู้ดูแลระบบเพื่อเพิ่มสิทธิ์ใหม่ให้กับ ผู้ใช้ฐานข้อมูล มีไวยากรณ์ที่เรียบง่ายซึ่งกำหนดไว้ดังนี้:

GRANT [สิทธิพิเศษ] ON [วัตถุ] TO [ผู้ใช้] [WITH GRANT OPTION]

นี่คือ rundown ในแต่ละพารามิเตอร์ที่คุณสามารถระบุได้ด้วยคำสั่งนี้:

ตัวอย่างเช่นสมมติว่าคุณต้องการให้ผู้ใช้ Joe สามารถดึงข้อมูลจากตารางพนักงานในฐานข้อมูลที่เรียกว่า HR คุณอาจใช้คำสั่ง SQL ต่อไปนี้:

ขอให้เลือกพนักงาน HR.employees ให้ Joe

โจจะมีความสามารถในการดึงข้อมูลจากตารางพนักงาน อย่างไรก็ตามเขาจะไม่สามารถให้สิทธิ์ผู้ใช้รายอื่นในการดึงข้อมูลจากตารางดังกล่าวได้เนื่องจากคุณไม่ได้รวมคำสั่ง GRANT OPTION WITH GRANT ในคำสั่ง GRANT

การยกเลิกการเข้าถึงฐานข้อมูล

คำสั่ง REVOKE ใช้เพื่อลบการเข้าถึงฐานข้อมูลจากผู้ใช้ที่ได้รับสิทธิ์ดังกล่าวก่อนหน้านี้ ไวยากรณ์สำหรับคำสั่งนี้ถูกกำหนดดังนี้:

REVOKE [GRANT OPTION FOR] [permission] ON [object] FROM [user] [CASCADE]

นี่คือ rundown ของพารามิเตอร์สำหรับคำสั่ง REVOKE:

ตัวอย่างเช่นคำสั่งต่อไปนี้จะเพิกถอนสิทธิ์ที่ได้รับจาก Joe ในตัวอย่างก่อนหน้านี้:

เรียกคืนการเลือก HR.employees จาก Joe

การปฏิเสธการเข้าใช้งานฐานข้อมูลโดยชัดแจ้ง

คำสั่ง DENY ใช้เพื่อป้องกันไม่ให้ผู้ใช้รับสิทธิ์เฉพาะอย่างชัดเจน ซึ่งจะเป็นประโยชน์เมื่อผู้ใช้เป็นสมาชิกของบทบาทหรือกลุ่มที่ได้รับสิทธิ์และคุณต้องการป้องกันไม่ให้ผู้ใช้แต่ละรายรับสิทธิ์โดยการสร้างข้อยกเว้น ไวยากรณ์สำหรับคำสั่งนี้มีดังนี้:

DENY [permission] ON [object] TO [user]

พารามิเตอร์สำหรับคำสั่ง DENY เหมือนกับคำสั่ง GRANT

ตัวอย่างเช่นถ้าคุณต้องการให้แน่ใจว่าแมทธิวจะไม่ได้รับความสามารถในการลบข้อมูลจากตารางพนักงานออกคำสั่งต่อไปนี้:

DENY DELETE ON HR.employees ให้กับ Matthew