Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ให้สิทธิ์เข้าถึง Stored Procedures ทั้งหมดใน MySQL ด้วย GRANT EXECUTE

บทนำ

สิทธิ์ EXECUTE ใน MySQL ใช้ควบคุมการเรียกใช้ Stored Procedures และ Functions สามารถ Grant ให้ User ได้ระดับ Database (ทั้งหมดใน DB) หรือระดับ Procedure เฉพาะตัว

ดูรายชื่อ User ในระบบ

mysql> SELECT User, Host FROM MySQL.User;

ผลลัพธ์ตัวอย่าง

+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| Bob              | %         |
| Charlie          | %         |
| Robert           | %         |
| User2            | %         |
| mysql.infoschema | %         |
| mysql.session    | %         |
| mysql.sys        | %         |
| root             | %         |
| @UserName@       | localhost |
| Adam Smith       | localhost |
| Chris            | localhost |
| David            | localhost |
| James            | localhost |
| John             | localhost |
| John Doe         | localhost |
| User1            | localhost |
| am               | localhost |
| hbstudent        | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
+------------------+-----------+
20 rows in set (0.00 sec)

ให้สิทธิ์ EXECUTE ทุก Procedure ในฐานข้อมูล 'web' ให้ User 'Robert'@'%'

mysql> GRANT EXECUTE ON web.* TO 'Robert'@'%';
Query OK, 0 rows affected (0.24 sec)

คำอธิบาย

  • EXECUTE - สิทธิ์เรียกใช้ Stored Procedure/Function
  • ON web.* - ใช้กับทุก Routine (Procedure/Function) ในฐานข้อมูล web
  • TO 'Robert'@'%' - ให้กับ User Robert จาก Host ใดๆ (% = Wildcard)

รูปแบบ GRANT EXECUTE อื่นๆ

-- ให้สิทธิ์ Procedure เฉพาะตัว
GRANT EXECUTE ON PROCEDURE web.MyProcedure TO 'Robert'@'%';

-- ให้สิทธิ์ Function เฉพาะตัว
GRANT EXECUTE ON FUNCTION web.MyFunction TO 'Robert'@'%';

-- ให้สิทธิ์หลาย User พร้อมกัน
GRANT EXECUTE ON web.* TO 'User1'@'%', 'User2'@'localhost';

-- ดูสิทธิ์ที่ได้รับ
SHOW GRANTS FOR 'Robert'@'%';

สิทธิ์อื่นที่เกี่ยวข้องกับ Routine

Privilegeคำอธิบาย
EXECUTEเรียกใช้ Procedure/Function (CALL)
ALTER ROUTINEแก้ไข/ลบ Procedure/Function
CREATE ROUTINEสร้าง Procedure/Function ใหม่
GRANT OPTIONมอบสิทธิ์ให้ User อื่นได้

ข้อควรระวัง

  • GRANT EXECUTE ON *.* ให้สิทธิ์ทุก Database (อันตราย - ควรระบุ Database ชัดเจน)
  • User ต้องมีสิทธิ์ USAGE (มีโดยอัตโนมัติเมื่อ CREATE USER)
  • สิทธิ์ EXECUTE ไม่รวมสิทธิ์เข้าถึงตารางภายใน Procedure (ต้องมีสิทธิ์บน Table แยกต่างหาก)