ฐานข้อมูล MySQL (4) บัญชีผู้ใช้ และการให้สิทธิ์

Computer Database 26 เมษายน พ.ศ. 2566 929
Home / Articles / 46

การสร้างบัญชีผู้ใช้ (Creating MySQL User)

สำหรับคนที่มีหลายๆ 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'@'%';

ให้สิทธิ์ผู้ใช้ (Granting User Permission)

สิทธิ์ของผู้ใช้ที่สามารถจะกระทำต่อตารางได้ ได้แก่ 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'@'%';

ถอนสิทธิ์ของผู้ใช้ (Revoke From User)

สมมุติว่าหากต้องการถอนสิทธิ์ 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

Profile Picture.
  • Name (Pen name): Sunny Jirakit (Sunny420x)
  • Study: Bachelor Degree of Computer Science from Chiang Mai Rajabhat University
  • Personality: Architect (INTJ-T)
  • Experience: JavaScript,  Angular.js, React.js, Next.js  Express.js, Unity C#, Socket.io