PostgreSQL Schema -2
PRACTICAL 5.VIEW CREATION INTO THE SCHEMA
--Create a view from "benz2.dept" table postgres=# create view dept_v as select * from benz2.dept; CREATE VIEW postgres=# select * from dept_v; dept_id | department ---------+------------ 1011 | Research 1012 | Sales (2 rows) postgres=# \dv List of relations Schema | Name | Type | Owner --------+--------+------+---------- public | dept_v | view | postgres (1 row)
-- first grant the superuser privilege to "u2" user postgres=# alter user u2 superuser; ALTER ROLE --connect as u2 user [postgres@r1 ~]$ psql -U u2 -d postgres Password for user u2:
--Create a schema and create a table and view within it as a super user postgres=# CREATE SCHEMA books CREATE TABLE databases (title text, release date, rating text) CREATE VIEW postgres_view AS SELECT title, release FROM databases WHERE rating IS NOT NULL; CREATE SCHEMA
--set the book search path for objects read postgres=# set search_path to books; SET postgres=# show search_path; search_path ------------- books (1 row) postgres=# \dv List of relations Schema | Name | Type | Owner --------+-------------+------+------- books | postgres_view | view | u2 (1 row) postgres=# \dt List of relations Schema | Name | Type | Owner --------+-----------+-------+------- books | databases | table | u2 (1 row)
PRACTICAL 6.CHANGING SEARCH_PATH
--Change the search path from "public" to "benz" First check the search path postgres=# \dt List of relations Schema | Name | Type | Owner --------+---------------+-------+---------- public | school | table | postgres public | school_bk | table | postgres public | school_bk2 | table | postgres public | student | table | postgres public | us_snail_addy | table | postgres (5 rows)
--set search_path as benz postgres=# set search_path to benz; SET --see what search path you are currently using postgres=# show search_path; search_path ------------- benz (1 row)
--list down benz schema's table postgres=# \dt List of relations Schema | Name | Type | Owner --------+------+-------+---------- benz | dept | table | postgres benz | emp | table | postgres (2 rows)
--Now you can select emp table without pointing dot(benz.emp) but if you want see (public or benz2) another schema table you need to specify schema name like "benz2.dept" postgres=# select * from emp; dept_id | department ---------+------------ 1 | nijam 1 | nijam 2 | john (3 rows)
PRACTICAL 7.ASSIGN SEARCH_PATH PERMANANTLY AND PARTICULAR USER:
--List down the users postgres-# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- john | Superuser | {} postgres | Superuser, Create role, Create DB, Replication | {} u1 | | {} u2 | Superuser | {} u3 | | {} u5 | | {} u6 | | {} u7 | | {} u8 |
--check the user u6 serach path after connected u6 user postgres=> show search_path ; search_path ---------------- "$user",public (1 row)
--connect as super user(u2)then assign search path permanently for a user,here we are assigning two search path (schema) to particular user u6 postgres=# alter user u6 set search_path to sara,benz2; ALTER ROLE postgres=# GRANT create ON SCHEMA sara TO u6; GRANT It's from u6 user postgres=# \q [root@r1 bin]# ./psql -U u6 -d db2 postgres=> show search_path; search_path ------------- sara, benz2 (1 row) postgres=# \conninfo You are connected to database "postgres" as user "u6" via socket in "/tmp" at port "5432". postgres=# \q
--ReConnect as "U6" user and check the search path correctly assigned or not [postgres@r1 ~]$ psql -U u6 -d postgres Password for user u6: postgres=> show search_path ; search_path ------------- sara, benz2 (1 row)
postgres=> \dn+
List of schemas
Name | Owner | Access privileges | Description
---------+----------+----------------------+------------------------
benz2 | postgres | postgres=UC/postgres+|
| | u3=UC/postgres +|
| | u5=UC/postgres +|
| | u6=U/postgres +|
| | u7=UC/postgres |
books | u2 | |
public | postgres | postgres=UC/postgres+| standard public schema
| | =U/postgres |
sara | u3 | u3=UC/u3 +|
| | u5=C/u3 +|
| | u6=C/u3 |
schema1 | u2 | |
schema2 | u2 | |
schema5 | postgres | |
schema6 | u2 | |
(8 rows)
PRACTICAL 8.MULTIPLE SCHEMA ASSIGNING CURRENT USER:
--connect as u2 user using command line [postgres@r1 ~]$ psql -U u2 -d postgres Password for user u2:
--check the search path of u2 user postgres=# show search_path; search_path ------------- books (1 row)
--create two schema names are schema,schema2 postgres=# create schema schema1; CREATE SCHEMA postgres=# create schema schema2; CREATE SCHEMA
--Now assigning multiple schema for current user postgres=# set search_path to schema1,schema2; SET
--Now u2 user got two schema's search path postgres=# show search_path; search_path ------------------ schema1, schema2 (1 row)
--if u2 user search the table in the above schema the user did'nt see any table becouse schema1 and schema2 are new schema currently nobody did not create objects(tables,views...etc) postgres=# \dt No relations found. Also, since schema1 is the first element in the path, new objects would by default be created in it
Comments
Post a Comment