加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql模式管理

发布时间:2020-12-13 17:08:43 所属栏目:百科 来源:网络整理
导读:一.用户 pg的user和role几乎是一样的,只是role是无法登录系统的,而用户可以 创建用户使用create user语句,一般使用create user with password 'xxx' XXX 其中最后的XXX是给予的角色权限 postgres =# h create user ; Command : CREATE USER Description def
一.用户
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


二.数据库
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".
2.修改数据库
使用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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读