สำหรับคนที่มีหลายๆ projects ทุก projects ควรออกแบบให้แต่ละ project เข้าถึงตารางของตนเองผ่าน user ที่แตกต่างกัน เพื่อจำกัดผู้ใช้ให้สามารถเข้าถึงและดำเนินการตารางที่ได้รับอนุญาติเท่านั้น ตัวอย่างเช่น หากต้องการสร้างผู้ใช้ newuser01 สามารถสร้างบัญชีผู้ใช้ได้โดยใช้คำสั่ง ดังนี้
CREATE USER 'newuser01'@'%' IDENTIFIED WITH mysql_native_password BY 'password123';
หรือหากต้องการให้ผู้ใช้สามารถเข้าสู่ระบบได้จากภายใน localhost เท่านั้น จะเปลี่ยนที่อยู่หลังชื่อ user ที่กรอก ดังนี้
CREATE USER 'newuser01'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password123';
หรือสำหรับบางเวอร์ชั่นจะใช้คำสั่งสั้นๆแบบนี้แทน โดยไม่ต้องใช้ authenticate แบบเก่า
CREATE USER 'newuser01'@'%' IDENTIFIED BY 'password123';
สามารถลบบัญชีผู้ใช้ได้โดยใช้คำสั่งนี้
DROP USER 'newuser01'@'%';
สิทธิ์ของผู้ใช้ที่สามารถจะกระทำต่อตารางได้ ได้แก่ SELECT, ALTER, DELETE, DROP, INSERT, UPDATE, REFERENCES, RELOAD
หากมีตารางที่ชื่อว่า users ในฐานข้อมูล db01 ซึ่งเราต้องการให้บัญชี newuser01 สามารถ SELECT และ UPDATE ได้เท่านั้น จะใช้คำสั่งดังนี้
GRANT SELECT, UPDATE on db01.users to 'newuser01'@'%';
หรือหากต้องการให้สิทธิ์ทั้งหมดของฐานข้อมูลดังกล่าวจะใช้คำสั่งดังนี้
GRANT all on db01.* to 'newuser01'@'%';
สมมุติว่าหากต้องการถอนสิทธิ์ Select ของตาราง users ในฐานข้อมูล db01 ออกจากบัญชี newuser01 สามารถใช้คำสั่งดังนี้
REVOKE select ON db01.users FROM 'newuser01'@'%';
หากมีปัญหาไม่สามารถให้สิทธิ์แก่ผู้ใช้ได้ หรือสิทธิ์ไม่ทำงาน สามารถใช้คำสั่ง
FLUSH PRIVILEGES;
เพื่อบังคับใช้การเปลี่ยนแปลงใหม่
สามารถแสดงสิทธิ์ของผู้ใช้ต่อตารางต่างๆได้ เช่น หากต้องการดูสิทธิ์ทั้งหมดของผู้ใช้ newuser01 จะใช้คำสั่งดังนี้
SHOW GRANTS FOR 'newuser01'@'%';
อ้างอิง: www.digitalocean.com/community/tutorials/how-to-create-a-new-user-and-grant-permissions-in-mysql
