PostgreSQL
-- สร้าง userCREATE USER username WITH PASSWORD 'password';
-- ลบ userDROP USER username;
-- เปลี่ยนรหัสผ่านALTER USER username WITH PASSWORD 'new_password';CREATE ROLE readonly;GRANT USAGE ON SCHEMA public TO readonly;GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly;
CREATE USER username WITH PASSWORD 'password';
GRANT readonly TO bob;Role Types
Section titled “Role Types”-- Read Only RoleCREATE ROLE readonly;
DROP ROLE username;
GRANT CONNECT ON DATABASE dbname TO readonly;-- รันภายใต้การ connect database เท่านั้นGRANT USAGE ON SCHEMA public TO readonly;GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly;
-- Read/Write RoleCREATE ROLE readwrite;GRANT CONNECT ON DATABASE dbname TO readwrite;GRANT USAGE ON SCHEMA public TO readwrite;GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO readwrite;
-- Admin RoleCREATE ROLE dbadmin WITH SUPERUSER CREATEDB CREATEROLE;
GRANT readonly TO bob;Grant / Revoke Privileges
Section titled “Grant / Revoke Privileges”-- ให้สิทธิ์ connect เข้า databaseGRANT CONNECT ON DATABASE dbname TO username;
-- ให้สิทธิ์ใช้งาน schemaGRANT USAGE ON SCHEMA public TO username;
-- ให้สิทธิ์อ่านตารางทั้งหมดใน schemaGRANT SELECT ON ALL TABLES IN SCHEMA public TO username;
-- ให้สิทธิ์แก้ไขตารางทั้งหมด (อ่าน/เขียน)GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO username;
-- ยกเลิกสิทธิ์REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM username;Default Privileges
Section titled “Default Privileges”-- กำหนด default privileges สำหรับ object ที่จะถูกสร้างใหม่ใน schema public-- ให้ role 'readonly' มีสิทธิ์ SELECT (อ่านข้อมูลได้) บน TABLES ที่สร้างใหม่โดยอัตโนมัติALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonly;
SELECT n.nspname AS schema, r.rolname AS grantor, d.defaclobjtype AS object_type, d.defaclacl AS privilegesFROM pg_default_acl dJOIN pg_roles r ON r.oid = d.defaclroleLEFT JOIN pg_namespace n ON n.oid = d.defaclnamespace;
-- กำหนด default privileges สำหรับ object ที่จะถูกสร้างใหม่ใน schema public-- ให้ role 'readwrite' มีสิทธิ์ SELECT, INSERT, UPDATE, DELETE (อ่าน/เขียน/แก้ไข/ลบ)-- บน TABLES ที่สร้างใหม่โดยอัตโนมัติALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO readwrite;Useful
Section titled “Useful”-- ดู users ทั้งหมด\duSELECT rolname, rolsuper, rolcreatedb, rolcreaterole, rolreplication, rolcanloginFROM pg_roles;
-- ดู สิทธิในตาราง\dpSELECT n.nspname AS schema, c.relname AS name, c.relkind AS type, c.relacl, pg_catalog.array_to_string(c.relacl, E'\n') AS access_privilegesFROM pg_catalog.pg_class c LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespaceWHERE c.relkind IN ('r','v','m','S','f','p') -- r = table, v = view, S = sequence ฯลฯ AND n.nspname NOT IN ('pg_catalog', 'information_schema')ORDER BY n.nspname, c.relname;
-- ดูสิทธิ์ในตาราง\z\z tablename
SELECT rolname, rolsuper, rolcreatedb, rolcreaterole, rolreplication, rolcanloginFROM pg_roles;
SELECT r.rolname, r.rolsuper, r.rolinherit, r.rolcreaterole, r.rolcreatedb, r.rolcanlogin, r.rolreplication, ARRAY( SELECT b.rolname FROM pg_auth_members m JOIN pg_roles b ON (m.roleid = b.oid) WHERE m.member = r.oid ) AS memberofFROM pg_roles rORDER BY r.rolname;
-- เปลี่ยนเจ้าของตาราง/DBALTER TABLE tablename OWNER TO username;ALTER DATABASE dbname OWNER TO username;