postgresql模式管理

前端之家收集整理的这篇文章主要介绍了postgresql模式管理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
一.用户
pg的user和role几乎是一样的,只是role是无法登录系统的,而用户可以
创建用户使用create user语句,一般使用create user with password 'xxx' XXX 其中最后的XXX是给予的角色权限
   
   
postgres=# \h create user;Command: CREATE USERDescription define a new database roleSyntaxCREATE USER name [ WITH ] option ...]where option can be SUPERUSER | NOSUPERUSER CREATEDB NOCREATEDB CREATEROLE NOCREATEROLE CREATEUSER NOCREATEUSER INHERIT NOINHERIT LOGIN NOLOGIN REPLICATION NOREPLICATION BYPASSRLS NOBYPASSRLS CONNECTION LIMIT connlimit ENCRYPTED UNENCRYPTED PASSWORD 'password' VALID UNTIL 'timestamp' IN ROLE role_name [,...] IN GROUP role_name ROLE role_name ADMIN role_name USER role_name SYSID uid
    
    
create user test with password 'test' superuser;
使用\du来查看当前pg中的用户
  
     
Role name Attributes Member of -----------+------------------------------------------------------------+----------- brent {} dsg Create DB postgres Superuser,76)"> role DB Replication Bypass RLS suq test Superuser{}
用户的权限分为系统权限和对象权限
对象权限使用grant语句来赋予:
 grant selectupdateinsert on pg_catalog.pg_roles to brent;GRANT
而系统权限其实就是用户是否具有一些系统角色,可以使用alter语句来赋予,例如给brent加上replication的角色
 alter role brent  replicationALTER ROLE


@H_655_301@二.数据库
1.创建数据库
使用create database来创建数据库,在psql中使用\l来查看当前实例中包含哪些数据库,其中postgres和template0和template1为initdb的时候就系统创建的.
 \h create database Command CREATE DATABASEDescription create a  databaseSyntaxCREATE DATABASE name OWNER [=] user_name  TEMPLATE  template ENCODING  encoding  LC_COLLATE  lc_collate  LC_CTYPE  lc_ctype  TABLESPACE  tablespace_name  ALLOW_CONNECTIONS  allowconn  CONNECTION LIMIT  connlimit  IS_TEMPLATE  istemplate  create database brent  owner=suq CREATE DATABASE \l  List of databases Name Owner Encoding Collate Ctype Access privileges -----------+----------+----------+---------+-------+----------------------- UTF8  C   template0 c/postgres + postgres=CTcpostgres template1 postgres
连接数据库可以使用\c DATABASENAME 或者在登录的时候直接指定登录哪个数据库
postgres@pg1 ~]$ psql brentpsql (9.5.1)Type "help"for helpbrent \q$ psql \c brentYou are now connected to database "brent"as user "postgres".
使用alter database命令修改数据库
\h alter database Command ALTER DATABASEDescription change a databaseSyntaxALTER DATABASE name ALLOW_CONNECTIONS allowconn IS_TEMPLATE istemplateALTER DATABASE name RENAME TO new_nameALTER DATABASE name OWNER TO { new_owner CURRENT_USER SESSION_USER }ALTER DATABASE name SET TABLESPACE new_tablespaceALTER DATABASE name SET configuration_parameter TO value DEFAULT ALTER DATABASE name SET configuration_parameter FROM CURRENTALTER DATABASE name RESET configuration_parameterALTER DATABASE name RESET ALL
可以修改最大连接数
alter database brent connection limit 10ALTER DATABASE
可以修改数据库
alter database brent rename to suqALTER DATABASE
删除数据库,使用drop database命令,当有人连接在数据库的时候是不能删除数据库的.

.模式
模式即schema,类似于oracle中schema,MysqL中的database概念,使用create schema来创建schema,一般我们的 schema和owner都设置为相同
suq \h create schemaCommand CREATE SCHEMADescription schemaSyntaxCREATE SCHEMA schema_name AUTHORIZATION role_specification schema_element CREATE SCHEMA AUTHORIZATION role_specification CREATE SCHEMA IF NOT EXISTS schema_name CREATE SCHEMA IF NOT EXISTS AUTHORIZATION role_specification role_specification can be GROUP user_name CURRENT_USER SESSION_USER
使用\n查看当前数据库下有哪些schema,public是创建database的时候系统生成的默认schema,类似于oracle中的public用户
create schema brent authorization suqCREATE SCHEMA \dn of schemas--------+---------- suqpublic postgres
使用drop schema来删除schema
drop schema brentDROP SCHEMA
使用alter schema来修改schema,例如修改schema的名字
alter schema brent rename to suq;ALTER SCHEMA postgres postgres
修改schema的所属主:
alter schema suq owner to suq suq
当连接到一个数据下的时候,创建表或者其它对象的时候一般都需要打上schema.name
或者使用修改搜索路径的方法,设置路径,类似于linux中设置PATH环境变量,当设置完成之后,所有的操作都默认
是在搜索路径下的schema执行,例如,当我们第一次登录到psql的时候,当前的search_path为登录public
此时使用\dt查看不到任何表
$ psql suq show search_path-# search_path -----------------"$user"public1 row) \dtNo relations found.
设置完成search_path后,就可以在suq这个模式下查看到表名了:
set search_pathSET \dt of relations Schema Type--------+------+-------+---------- t1 table postgres
原文链接:https://www.f2er.com/postgresql/194653.html

猜你在找的Postgre SQL相关文章