ในระบบฐานข้อมูล PostgreSQL การจัดการเรื่อง User, Role และ Permission ถือเป็นเรื่องสำคัญมาก เพราะช่วยให้ระบบมีความปลอดภัยและควบคุมการเข้าถึงข้อมูลได้อย่างเหมาะสม บทความนี้จะอธิบายการสร้าง User, การจัดการ Role และการกำหนด Permission ด้วยตัวอย่าง SQL จริง
User คืออะไร?
User ใน PostgreSQL คือบัญชีผู้ใช้ที่สามารถเชื่อมต่อกับฐานข้อมูล โดยแต่ละ User จะมีสิทธิ์ (Privileges) ตามที่กำหนดไว้
การสร้าง User
CREATE USER alice WITH PASSWORD 'securepass'; CREATE USER bob WITH PASSWORD 'mypassword';
Role คืออะไร?
Role คือกลุ่มของสิทธิ์ (Privileges) ที่สามารถกำหนดให้กับ User หลาย ๆ คนได้ ทำให้จัดการสิทธิ์ได้ง่ายขึ้น เช่น Role สำหรับ Admin, Developer, Read-only
การสร้าง Role
CREATE ROLE readonly; CREATE ROLE admin;
การมอบ Role ให้ User
GRANT readonly TO bob; GRANT admin TO alice;
Permission คืออะไร?
Permission หรือสิทธิ์การเข้าถึง ใช้กำหนดว่า User หรือ Role สามารถทำอะไรกับฐานข้อมูลได้บ้าง เช่น SELECT, INSERT, UPDATE, DELETE
การกำหนด Permission
-- อนุญาตให้ Role readonly อ่านข้อมูลได้ GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly; -- อนุญาตให้ Role admin ทำทุกอย่าง GRANT ALL PRIVILEGES ON DATABASE mydb TO admin;
ตัวอย่างการใช้งานจริง
สมมติว่าเรามีระบบ E-commerce เราสามารถจัดการสิทธิ์ได้ดังนี้:
- User นักพัฒนา → ได้สิทธิ์ SELECT, INSERT
- User ฝ่ายบัญชี → ได้สิทธิ์ SELECT
- User Admin → ได้สิทธิ์ทั้งหมด
-- สร้าง Role CREATE ROLE developer; CREATE ROLE accountant; -- กำหนดสิทธิ์ GRANT SELECT, INSERT ON ALL TABLES IN SCHEMA public TO developer; GRANT SELECT ON ALL TABLES IN SCHEMA public TO accountant;
การเพิกถอนสิทธิ์ (REVOKE)
หากต้องการยกเลิกสิทธิ์ที่เคยมอบให้ สามารถใช้คำสั่ง REVOKE
REVOKE INSERT ON ALL TABLES IN SCHEMA public FROM developer;
การสร้าง Role แบบ Login และ Non-Login
Role มี 2 แบบคือ:
- Login Role: ใช้เชื่อมต่อฐานข้อมูล
- Non-Login Role: ใช้สำหรับกำหนดสิทธิ์เท่านั้น
-- Login Role CREATE ROLE manager LOGIN PASSWORD 'managerpass'; -- Non-Login Role CREATE ROLE report_role;

Best Practices
- อย่าให้สิทธิ์ SUPERUSER โดยไม่จำเป็น
- ใช้ Role เพื่อจัดการสิทธิ์แทนการให้สิทธิ์ตรงกับ User
- แบ่งสิทธิ์ตามหน้าที่การทำงาน (Least Privilege)
- ทบทวนสิทธิ์ของ User เป็นประจำ
สรุป
การจัดการ User, Role และ Permission ใน PostgreSQL ช่วยให้ระบบมีความปลอดภัยและเป็นระเบียบ การใช้ Role ทำให้จัดการสิทธิ์ได้ง่ายขึ้น และควรยึดหลักการ Least Privilege เพื่อป้องกันการเข้าถึงข้อมูลเกินความจำเป็น
SEO Keywords
PostgreSQL User,PostgreSQL Role,PostgreSQL Permission,SQL User Role Permission,การจัดการ User,การจัดการ Role,การกำหนดสิทธิ์ SQL,Database Security