Table-level permissions control who can see or change data in a whole table. This keeps data safe and organized.
Table-level permissions in PostgreSQL
GRANT privilege_type ON table_name TO user_or_role; REVOKE privilege_type ON table_name FROM user_or_role;
privilege_type can be SELECT, INSERT, UPDATE, DELETE, or ALL PRIVILEGES.
You can grant permissions to a user or a group (role).
GRANT SELECT ON employees TO alice;
GRANT INSERT, UPDATE ON sales TO sales_team;
REVOKE DELETE ON customers FROM bob;
GRANT ALL PRIVILEGES ON orders TO manager;This creates a 'products' table and a user 'john'. Then it gives 'john' permission to read (SELECT) from the 'products' table only. The \dp command shows the permissions on the table.
CREATE TABLE products ( id SERIAL PRIMARY KEY, name TEXT NOT NULL, price NUMERIC NOT NULL ); CREATE USER john; GRANT SELECT ON products TO john; -- Check permissions for john \dp products
Use GRANT ALL PRIVILEGES carefully; it gives full control.
Revoking permissions removes access immediately.
Permissions can be given to roles to manage groups of users easily.
Table-level permissions control who can read or change data in a table.
Use GRANT to give permissions and REVOKE to remove them.
Permissions help keep data safe and organized.
Practice
GRANT SELECT ON table_name TO user_name; command do in PostgreSQL?Solution
Step 1: Understand the GRANT command
The GRANT command is used to give specific permissions to users on database objects like tables.Step 2: Identify the permission type SELECT
SELECT permission allows reading data from the table but not modifying it.Final Answer:
Allows the user to read data from the specified table. -> Option DQuick Check:
GRANT SELECT = read permission [OK]
- Confusing SELECT with DELETE permission
- Thinking GRANT creates tables
- Mixing GRANT with REVOKE commands
employees from user john?Solution
Step 1: Recall REVOKE syntax
The correct syntax is REVOKE permission ON table FROM user;Step 2: Match syntax with options
REVOKE INSERT ON employees FROM john; matches the correct order: REVOKE INSERT ON employees FROM john;Final Answer:
REVOKE INSERT ON employees FROM john; -> Option CQuick Check:
REVOKE permission ON table FROM user [OK]
- Swapping ON and FROM keywords
- Using TO instead of FROM
- Incorrect order of clauses
GRANT SELECT ON orders TO alice; GRANT INSERT ON orders TO bob; REVOKE SELECT ON orders FROM alice;
Which of the following is true about user permissions on the
orders table?Solution
Step 1: Analyze granted permissions
Alice was granted SELECT (read) permission, Bob was granted INSERT permission.Step 2: Analyze revoked permissions
Alice's SELECT permission was revoked, so she no longer can read data.Final Answer:
Alice cannot read data; Bob can insert data. -> Option AQuick Check:
Revoked SELECT removes read access [OK]
- Assuming revoked permission still applies
- Confusing INSERT with SELECT
- Thinking REVOKE affects other users
GRANT UPDATE ON customers TO ;
What is the error in this command?
Solution
Step 1: Check syntax completeness
The command ends with TO but does not specify a user or role name.Step 2: Validate permission and table name
UPDATE is a valid permission and customers is the table name, so those parts are correct.Final Answer:
Missing user name after TO keyword. -> Option AQuick Check:
GRANT requires user after TO [OK]
- Leaving user name blank after TO
- Confusing permission names
- Omitting table name
carol to read and insert data into the products table but prevent her from deleting or updating any data. Which commands should you use?Solution
Step 1: Grant only SELECT and INSERT permissions
To allow reading and inserting, grant SELECT and INSERT on products to carol.Step 2: Revoke DELETE and UPDATE permissions
To prevent deleting or updating, explicitly revoke DELETE and UPDATE permissions if previously granted.Final Answer:
GRANT SELECT, INSERT ON products TO carol; REVOKE DELETE, UPDATE ON products FROM carol; -> Option BQuick Check:
Grant needed permissions, revoke unwanted ones [OK]
- Granting ALL permissions instead of specific ones
- Not revoking unwanted permissions
- Granting DELETE or UPDATE by mistake
Ready to prove it?
Pass the test and this pattern moves unknown
