GRANT, REVOKE ແລະ DENY Database Permissions
ພາສາການຄວບຄຸມຂໍ້ມູນ (DCL) ແມ່ນຊຸດຂອງ ພາສາຄໍາຖາມແບບໂຄງສ້າງ (SQL) ແລະອະນຸຍາດໃຫ້ຜູ້ເບິ່ງແຍງລະບົບຖານຂໍ້ມູນການເຂົ້າເຖິງການຮັກສາຄວາມປອດໄພໃນຖານຂໍ້ມູນກ່ຽວຂ້ອງ. ມັນປະກອບດ້ວຍພາສາຄໍາສັບຂໍ້ມູນ (DDL) ເຊິ່ງຖືກນໍາໃຊ້ເພື່ອເພີ່ມແລະລຶບວັດຖຸຖານຂໍ້ມູນແລະພາສາການຈັດການຂໍ້ມູນ (DML) ທີ່ນໍາໃຊ້ເພື່ອດຶງເອົາ, ໃສ່ແລະດັດແປງເນື້ອຫາຂອງຖານຂໍ້ມູນ.
DCL ແມ່ນ simplest ຂອງ ຊຸດ SQL , ມັນປະກອບດ້ວຍພຽງແຕ່ສາມຄໍາສັ່ງ: GRANT, REVOKE, ແລະ DENY. ສົມທົບ, ສາມຄໍາສັ່ງເຫຼົ່ານີ້ໃຫ້ຜູ້ບໍລິຫານທີ່ມີຄວາມຍືດຫຍຸ່ນໃນການກໍານົດແລະເອົາການອະນຸຍາດຖານຂໍ້ມູນໃນຄົນອັບເດດ: granular ທີ່ສຸດ.
ເພີ່ມສິດດ້ວຍຄໍາສັ່ງ GRANT
ຄໍາສັ່ງ GRANT ແມ່ນໃຊ້ໂດຍຜູ້ບໍລິຫານເພື່ອເພີ່ມສິດໃຫມ່ແກ່ ຜູ້ໃຊ້ຖານຂໍ້ມູນ . ມັນມີ syntax ງ່າຍດາຍຫຼາຍ, ກໍານົດດັ່ງຕໍ່ໄປນີ້:
GRANT [privilege] ON [object] TO [user] [WITH OPTION]ນີ້ແມ່ນການລ່ວງລະເມີດກ່ຽວກັບແຕ່ລະພາລາມິເຕີທີ່ທ່ານສາມາດສະຫນອງດ້ວຍຄໍາສັ່ງນີ້:
- ສິດທິພິເສດ ສາມາດເປັນຄໍາທີ່ໃຊ້ທັງຫມົດ (ເພື່ອໃຫ້ມີຄວາມກວ້າງຂອງການອະນຸຍາດ) ຫຼືການອະນຸຍາດຖານຂໍ້ມູນສະເພາະຫຼືກໍານົດສິດ. ຕົວຢ່າງລວມມີ CREATE DATABASE, SELECT, INSERT, UPDATE, DELETE, EXECUTE ແລະ CREATE VIEW.
- ຈຸດປະສົງ ສາມາດເປັນວັດຖຸຖານຂໍ້ມູນໃດໆ. ຕົວເລືອກສິດທິພິເສດທີ່ຖືກຕ້ອງແຕກຕ່າງກັນໄປຕາມປະເພດຂອງຖານຂໍ້ມູນທີ່ທ່ານປະກອບຢູ່ໃນຂໍ້ນີ້. ໂດຍປົກກະຕິ, ຈຸດປະສົງຈະເປັນຖານຂໍ້ມູນ, ຫນ້າທີ່, ຂັ້ນຕອນທີ່ເກັບໄວ້ , ຕາຕະລາງຫຼືມຸມເບິ່ງ.
- ຜູ້ໃຊ້ ສາມາດເປັນຜູ້ໃຊ້ຖານຂໍ້ມູນໃດໆ. ນອກນັ້ນທ່ານຍັງສາມາດປ່ຽນພາລະບົດບາດສໍາລັບຜູ້ໃຊ້ໃນຂໍ້ນີ້ຖ້າທ່ານຕ້ອງການໃຊ້ລະບົບຖານຂໍ້ມູນທີ່ປອດໄພ.
- ຖ້າທ່ານປະກອບມີຂໍ້ບັງຄັບ GRANT OPTION ທີ່ຢູ່ໃນຄໍາສັ່ງຂອງ GRANT, ທ່ານບໍ່ພຽງແຕ່ໃຫ້ຜູ້ໃຊ້ທີ່ກໍານົດໄວ້ອະນຸຍາດທີ່ກໍານົດໄວ້ໃນຄໍາສັ່ງ SQL ເທົ່ານັ້ນແຕ່ຍັງໃຫ້ຜູ້ໃຊ້ສາມາດອະນຸຍາດໃຫ້ຜູ້ໃຊ້ຖານຂໍ້ມູນເຫລົ່ານັ້ນມີສິດດັ່ງດຽວກັນ. ສໍາລັບເຫດຜົນນີ້ໃຫ້ໃຊ້ຂໍ້ນີ້ດ້ວຍການດູແລ.
ຕົວຢ່າງ, ສົມມຸດວ່າທ່ານຕ້ອງການໃຫ້ຜູ້ໃຊ້ Joe ສາມາດດຶງຂໍ້ມູນຈາກຕາຕະລາງພະນັກງານໃນຖານຂໍ້ມູນທີ່ເອີ້ນວ່າ HR. ທ່ານອາດຈະໃຊ້ຄໍາສັ່ງ SQL ຕໍ່ໄປນີ້:
ໃຫ້ GRANT SELECT ກ່ຽວກັບ HRemployees TO JoeJoe ຕອນນີ້ຈະມີຄວາມສາມາດທີ່ຈະເອົາຂໍ້ມູນຈາກຕາຕະລາງພະນັກງານ. ລາວຈະບໍ່ອະນຸຍາດໃຫ້ຜູ້ໃຊ້ອື່ນອະນຸຍາດໃຫ້ເອົາຂໍ້ມູນຈາກຕາຕະລາງນັ້ນມາຍ້ອນວ່າທ່ານບໍ່ປະກອບມີຂໍ້ກໍານົດທີ່ມີຂໍ້ກໍານົດຂອງ GRANT OPTION ໃນໃບຄໍາຮ້ອງ GRANT.
Revoking Access Database
ຄໍາສັ່ງ REVOKE ຖືກນໍາໃຊ້ເພື່ອລຶບການເຂົ້າເຖິງຖານຂໍ້ມູນຈາກຜູ້ໃຊ້ທີ່ຜ່ານມາໄດ້ຮັບການເຂົ້າເຖິງດັ່ງກ່າວ. syntax ສໍາລັບຄໍາສັ່ງນີ້ຖືກກໍານົດດັ່ງຕໍ່ໄປນີ້:
REVOKE [GRANT OPTION FOR] [permission] ON [object] FROM [user] [CASCADE]ນີ້ແມ່ນການລ່ວງລະເມີດກ່ຽວກັບຕົວກໍານົດການສໍາລັບຄໍາສັ່ງ REVOKE:
- ການອະນຸຍາດ ລະບຸການອະນຸຍາດຖານຂໍ້ມູນທີ່ຈະລຶບອອກຈາກຜູ້ໃຊ້ທີ່ຖືກລະບຸ. ຄໍາສັ່ງລົບລ້າງການອ້າງອິງ GRANT ແລະ DENY ກ່ອນຫນ້ານີ້ສໍາລັບການອະນຸຍາດທີ່ກໍານົດໄວ້.
- ຈຸດປະສົງ ສາມາດເປັນວັດຖຸຖານຂໍ້ມູນໃດໆ. ຕົວເລືອກສິດທິພິເສດທີ່ຖືກຕ້ອງແຕກຕ່າງກັນໄປຕາມປະເພດຂອງຖານຂໍ້ມູນທີ່ທ່ານປະກອບຢູ່ໃນຂໍ້ນີ້. ໂດຍປົກກະຕິ, ຈຸດປະສົງຈະເປັນຖານຂໍ້ມູນ, ຫນ້າທີ່, ຂັ້ນຕອນທີ່ເກັບໄວ້, ຕາຕະລາງຫຼືມຸມເບິ່ງ.
- ຜູ້ໃຊ້ ສາມາດເປັນຜູ້ໃຊ້ຖານຂໍ້ມູນໃດໆ. ນອກນັ້ນທ່ານຍັງສາມາດປ່ຽນພາລະບົດບາດສໍາລັບຜູ້ໃຊ້ໃນຂໍ້ນີ້ຖ້າທ່ານຕ້ອງການໃຊ້ລະບົບຖານຂໍ້ມູນທີ່ປອດໄພ.
- ຂໍ້ກໍານົດການອະນຸຍາດ ສໍາລັບ ຂໍ້ກໍານົດເອົາຄວາມສາມາດຂອງຜູ້ໃຊ້ທີ່ລະບຸໄວ້ໃຫ້ໃບອະນຸຍາດທີ່ລະບຸໄວ້ກັບຜູ້ໃຊ້ອື່ນໆ. ຫມາຍເຫດ : ຖ້າທ່ານປະກອບມີຂໍ້ກໍານົດຂອງ GRANT OPTION ສໍາລັບ ຂໍ້ກໍານົດໃນ REVOKE, ໃບອະນຸຍາດຫລັກ ບໍ່ໄດ້ ຖືກຍົກເລີກ. ຂໍ້ກໍານົດນີ້ຍົກເວັ້ນ ພຽງແຕ່ ຄວາມສາມາດທີ່ໄດ້ຮັບການຊ່ວຍເຫຼືອ.
- ຕົວເລືອກ CASCADE ຍັງຍົກເລີກການອະນຸຍາດທີ່ກໍານົດໄວ້ຈາກຜູ້ໃຊ້ໃດຫນຶ່ງທີ່ຜູ້ໃຊ້ທີ່ລະບຸໄວ້ໄດ້ອະນຸຍາດ.
ຕົວຢ່າງເຊັ່ນຄໍາສັ່ງຕໍ່ໄປນີ້ຖອນເອົາໃບອະນຸຍາດທີ່ອະນຸຍາດໃຫ້ Joe ໃນຕົວຢ່າງກ່ອນຫນ້ານີ້:
REVOKE SELECT ກ່ຽວກັບ HRemployees FROM Joeອະທິບາຍການເຂົ້າເຖິງຖານຂໍ້ມູນຢ່າງຊັດເຈນ
ຄໍາສັ່ງ DENY ຖືກນໍາໃຊ້ຢ່າງຫ້າວຫັນປ້ອງກັນຜູ້ໃຊ້ຈາກການໄດ້ຮັບອະນຸຍາດໂດຍສະເພາະ. ນີ້ແມ່ນປະໂຫຍດເມື່ອຜູ້ໃຊ້ເປັນສະມາຊິກຂອງບົດບາດຫຼືກຸ່ມທີ່ໄດ້ຮັບອະນຸຍາດແລະທ່ານຕ້ອງການປ້ອງກັນບໍ່ໃຫ້ຜູ້ໃຊ້ແຕ່ລະຄົນໄດ້ຮັບອະນຸຍາດໂດຍການສ້າງຂໍ້ຍົກເວັ້ນ. syntax ສໍາລັບຄໍາສັ່ງນີ້ແມ່ນດັ່ງຕໍ່ໄປນີ້:
DENY [ອະນຸຍາດ] ON [object] TO [user] ພາລາມິເຕີສໍາລັບຄໍາສັ່ງ DENY ແມ່ນຄືກັບຄໍາທີ່ໃຊ້ສໍາລັບຄໍາສັ່ງ GRANT.
ຕົວຢ່າງເຊັ່ນຖ້າທ່ານຕ້ອງການໃຫ້ແນ່ໃຈວ່າແມັດທິວຈະບໍ່ໄດ້ຮັບຄວາມສາມາດລຶບຂໍ້ມູນຈາກຕາຕະລາງພະນັກງານ, ອອກຄໍາສັ່ງຕໍ່ໄປນີ້: