คำสั่ง GRANT
มอบสิทธิ์ให้ User Account สามารถสร้าง User ใหม่ได้อีกด้วย
Syntax
GRANT privilege[, privilege]...
ON privilege_level
TO user [IDENTIFIED BY 'password']
[REQUIRE tls_option]
[WITH [GRANT_OPTION | resource_option]];
องค์ประกอบ
- Privileges: SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALL, etc.
- Privilege Level: *.* (Global), db.* (Database), db.table (Table), db.table.col (Column)
- User: 'user'@'host' - สร้างใหม่หรือแก้ไข user เดิม
- IDENTIFIED BY: ตั้งรหัสผ่าน (optional)
- REQUIRE: บังคับ SSL/X509 (optional)
- WITH GRANT OPTION: อนุญาตให้ user นี้ GRANT ให้คนอื่น
- WITH resource_option: จำกัด resource (MAX_QUERIES_PER_HOUR, etc.)
ตัวอย่างครบ
-- สร้าง user
CREATE USER abcd@localhost IDENTIFIED BY 'password123';
-- ให้สิทธิ์ทั้งหมด รวม GRANT OPTION
GRANT ALL ON *.* TO 'abcd'@'localhost' WITH GRANT OPTION;
-- ตรวจสอบ
SHOW GRANTS FOR abcd@localhost;
+---------------------------------------------------------------------+
| Grants for abcd@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'abcd'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
ตัวอย่างให้สิทธิ์เฉพาะ
GRANT SELECT, INSERT ON mydb.* TO 'app_user'@'%' IDENTIFIED BY 'pass';
GRANT SELECT (id, name, email) ON mydb.users TO 'report_user'@'%';