Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ni ➜ ~ createdb IB_lab_5
- ni ➜ ~ psql -U postgres -d IB_lab_5
- psql (11.5)
- Введите "help", чтобы получить справку.
- IB_lab_5=# CREATE USER lab_super_user WITH ENCRYPTED PASSWORD 'secret';
- CREATE ROLE
- IB_lab_5=# CREATE USER lab_readonly_user WITH ENCRYPTED PASSWORD 'secret';
- CREATE ROLE
- IB_lab_5=# CREATE USER lab_write_user WITH ENCRYPTED PASSWORD 'secret';
- CREATE ROLE
- IB_lab_5=# GRANT ALL PRIVILEGES ON DATABASE IB_lab_5 TO lab_super_user;
- GRANT
- IB_lab_5=# GRANT CONNECT ON DATABASE IB_lab_5 TO lab_readonly_user;
- GRANT
- IB_lab_5=# GRANT USAGE ON SCHEMA public TO lab_readonly_user;
- GRANT
- IB_lab_5=# GRANT SELECT ON ALL TABLES IN SCHEMA public TO lab_readonly_user;
- GRANT
- IB_lab_5=# GRANT CONNECT ON DATABASE IB_lab_5 TO lab_write_user;
- GRANT
- IB_lab_5=# GRANT USAGE ON SCHEMA public TO lab_write_user;
- GRANT
- IB_lab_5=# CREATE TABLE account(
- IB_lab_5(# user_id serial PRIMARY KEY,
- IB_lab_5(# username VARCHAR (50) UNIQUE NOT NULL,
- IB_lab_5(# password VARCHAR (50) NOT NULL
- IB_lab_5(# )
- IB_lab_5-# ;
- CREATE TABLE
- IB_lab_5=# GRANT SELECT ON account TO lab_write_user;
- GRANT
- IB_lab_5=# GRANT INSERT ON account TO lab_write_user;
- GRANT
- # TEST WRITE FROM SUPERUSER
- IB_lab_5=# SET ROLE lab_write_user;
- SET
- IB_lab_5=> INSERT INTO account VALUES(1, 'user', 'pass');
- INSERT 0 1
- # TEST READ AND WRITE FROM SUPERUSER
- IB_lab_5=> SET ROLE lab_readonly_user;
- SET
- IB_lab_5=> INSERT INTO account VALUES(1, 'user', 'pass');
- ERROR: permission denied for table account
- IB_lab_5=> SELECT * FROM account;
- user_id | username | password
- ---------+----------+----------
- 1 | user | pass
- (1 строка)
- # TEST CREATE TABLE FROM SUPERUSER
- IB_lab_5=> SET ROLE lab_super_user;
- SET
- IB_lab_5=> CREATE TABLE test(
- id serial PRIMARY KEY,
- value VARCHAR (50) UNIQUE NOT NULL
- );
- CREATE TABLE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement