Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> Office

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

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

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

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

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

GRANT [privilege]
ON [object]
TO [user]
[WITH GRANT OPTION]

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

  • Privilege — สามารถเป็นคีย์เวิร์ด ALL (เพื่อให้สิทธิ์หลากหลาย) หรือสิทธิ์ฐานข้อมูลเฉพาะหรือชุดของสิทธิ์ ตัวอย่างรวมถึง CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE และ CREATE VIEW
  • Object — สามารถเป็นออบเจ็กต์ฐานข้อมูลใดๆ ตัวเลือกสิทธิ์ที่ถูกต้องจะแตกต่างกันไปตามประเภทของออบเจ็กต์ฐานข้อมูลที่คุณรวมในคลอจนี้ โดยทั่วไป ออบเจ็กต์จะเป็นฐานข้อมูล ฟังก์ชัน stored procedure ตาราง หรือมุมมอง
  • User — สามารถเป็นผู้ใช้ฐานข้อมูลใดๆ คุณยังสามารถแทนที่ด้วย role (บทบาท) สำหรับผู้ใช้ในคลอจนี้ หากคุณต้องการใช้ความปลอดภัยฐานข้อมูลแบบ role-based
  • หากคุณรวมคลอจ WITH GRANT OPTION ที่เป็นตัวเลือกที่ท้ายคำสั่ง GRANT คุณไม่เพียงแต่ให้สิทธิ์ที่ระบุในคำสั่ง SQL แต่มอบสิทธิ์ให้ผู้ใช้นั้นเพิ่มเติม เพื่อให้สิทธิ์เดียวกันนั้นแก่ผู้ใช้ฐานข้อมูล คนอื่น อีกด้วย ด้วยเหตุนี้ ใช้คลอจนี้ด้วยความระมัดระวัง

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

GRANT SELECT
ON HR.employees
TO Joe

Joe สามารถดึงข้อมูลจากตาราง employees ได้ เขาจะ ไม่สามารถ ให้สิทธิ์ผู้ใช้อื่นดึงข้อมูลจากตารางนั้นได้ เนื่องจากสคริปต์ DCL ไม่ได้รวมคลอจ WITH GRANT OPTION

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

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

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

นี่คือรายละเอียดพารามิเตอร์สำหรับคำสั่ง REVOKE:

  • Permission — ระบุสิทธิ์ฐานข้อมูลที่จะลบจากผู้ใช้ที่ระบุ คำสั่งเพิกถอนทั้งการยืนยัน GRANT และ DENY ที่ทำไว้ก่อนหน้านี้สำหรับสิทธิ์ที่ระบุ
  • Object — สามารถเป็นออบเจ็กต์ฐานข้อมูลใดๆ ตัวเลือกสิทธิ์ที่ถูกต้องแตกต่างกันไปตามประเภทของออบเจ็กต์ฐานข้อมูลที่คุณรวมในคลอจนี้ โดยทั่วไป ออบเจ็กต์จะเป็นฐานข้อมูล ฟังก์ชัน stored procedure ตาราง หรือมุมมอง
  • User — สามารถเป็นผู้ใช้ฐานข้อมูลใดๆ คุณยังสามารถแทนที่ด้วย role สำหรับผู้ใช้ในคลอจนี้ หากคุณต้องการใช้ความปลอดภัยฐานข้อมูลแบบ role-based
  • คลอจ GRANT OPTION FOR ลบความสามารถของผู้ใช้ที่ระบุในการให้สิทธิ์ที่ระบุแก่ผู้ใช้คนอื่น หากคุณรวมคลอจ GRANT OPTION FOR ในคำสั่ง REVOKE สิทธิ์หลักจะไม่ถูกเพิกถอน คลอจนี้เพิกถอนเฉพาะความสามารถในการให้สิทธิ์
  • ตัวเลือก CASCADE ยังเพิกถอนสิทธิ์ที่ระบุจากผู้ใช้ทุกคนที่ผู้ใช้ที่ระบุได้ให้สิทธิ์ไป

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

REVOKE SELECT
ON HR.employees
FROM Joe

การปฏิเสธการเข้าถึงฐานข้อมูลอย่างชัดเจน

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

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

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

DENY DELETE
ON HR.employees
TO Matthew