postgreSQL | 数据库管理

数据库管理

一、Role

login role:拥有数据库的登陆权限spring

member role:一个role继承其余role的权限,从而成为member rolesql

group role:拥有member role的role数据库

  • ###问题:角色不存在

1.1  建立、删除、查询

建立可login roleubuntu

建立group rolespringboot

删除role服务器

查询role架构

\du

1.2  Role属性

 一个数据库角色能够有一系列属性,这些属性定义他的权限,以及与客户认证系统的交互。
    1. 登陆权限:
    只有具备LOGIN属性的角色才能够用于数据库链接,具备该属性的角色视为登陆用户,建立方法:
    CREATE    ROLE       name      LOGIN      PASSWORD    '123456';
    CREATE    USER       name      PASSWORD   '123456';    
    2. 超级用户:
   和建立普通用户不一样,建立超级用户必须是以超级用户的身份执行如下命令:
    CREATE     ROLE      name     SUPERUSER;    
    3. 建立数据库:
    角色要想建立数据库,必须明确赋予建立数据库的属性,见以下命令:
    CREATE    ROLE       name     CREATEDB;    
    4. 建立角色:
    一个角色要想建立更多角色,必须明确给予建立角色的属性,见以下命令:
    CREATE    ROLE       name     CREATEROLE;dom

1.3  Role权限

         数据库对象在被建立时都会被赋予一个owner,owner就是执行对象建立语句的角色。对于大多数类型的对象,其初始状态是只有owner(或superuser)能够对该对象作任何事情。若是要容许其它用户可使用该对象,必须赋予适当的权限。PostgreSQL中预约义了许多不一样类型的内置权限,如:SELECT、INSERT、UPDATE、DELETE、RULE、REFERENCES、TRIGGER、CREATE、TEMPORARY、EXECUTE、USAGE。socket

使用GRANT命令来赋予权限:函数

其含义为:将tbl_name表的update权限赋予role_0角色。

GRANT UPDATE ON tbl_name TO role_0;

使用REVOKE命令撤销权限:

 其含义为:对全部角色(PUBLIC)撤销在tbl_name对象上的全部权限(ALL)。

REVOKE ALL ON tbl_name FROM PUBLIC;

二、DataBase

2.1 建立、删除

建立数据库。

CREATE DATABASE database_name;

删除数据库。

drop database database_name;

2.2 数据库访问

2.2.1  登陆

psql命令登陆数据库

参数含义以下:-U指定用户,-d指定数据库,-h指定服务器,-p指定端口

psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432

2.2.2  修改数据库默认账号的密码

以Linux用户"postgres"的身份(此时只有该用户有psql命令)执行psql客户端。若是PostgreSQL内部存在“dbname”和“username”同名,则dbname可省略(系统用户名、数据库用户名、数据库名都为postgres,故简写)

sudo -u postgres psql

修改该管理员密码,可用命令:

postgres=# alter user postgres with password '123456';

删除该管理员的密码,可用命令:

sudo -u postgres psql -d postgres

2.2.3   实战

###    建立一个角色

create user springboot with password '111111';

###    给这个角色建立专属数据库

create database pgdb_test owner springboot;

###    用这个角色登陆这个数据库

###### 1、peer     authentication    failed   for    user    "springboot"

tu@ddouble:~$ psql -U springboot -d pgdb_test 
psql: FATAL:  Peer authentication failed for user "springboot"

解决方法:参看连接

Open /etc/postgresql/9.5/main/pg_hba.conf with root access
 sudo nano /etc/postgresql/9.5/main/pg_hba.conf
Change peer to md5 in these lines.

Before changing

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            peer
# IPv6 local connections:
host    all             all             ::1/128                 peer
After your change
# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
Save the file with pressing Ctrl-O. Exit nano with Ctrl-X
Restart postgresql using
sudo service postgresql restart

2.3  database、 table 、 schema 的三者关系

  • ### 《PostgreSQL即学即用》人民邮电-丁奇鹏[译]

schema对database中的table进行逻辑分组管理。

  • ###    PostgreSQL模式(架构)亿百教程

schema(架构)是指定的表集合。 它还能够包含视图,索引,序列,数据类型,运算符和函数。

  • ###    关系 [ 照我看就是分类,命名的时候省点事 ]

DB之间互相独立,故而DB各自的schema、table也独立

DB下属schema(nums >=1),初始有一个public schema

schema下属“相关table”

2.4 schema管理

2.4.1 添加/删除schema

###    添加 | 语法

CREATE SCHEMA schema_name;

###    添加 | 指定拥有的user

CREATE SCHEMA schema_name AUTHORIZATION user_name;

###    添加 | 确保模式被建立

CREATE SCHEMA IF NOT EXISTS schema_name;

###    删除 | 语法

DROP SCHEMA schema_name;

###    删除 | 级联删除

DROP SCHEMA schema_name CASCADE;

2.4.2 schema间对象移动

###    单个对象移动

ALTER  TABLE  table_name
SET  SCHEMA  another_schema_name;

###    全部对象移动

应用条件:第二模式不存在同名对象。若是存在,则为每一个对象执行alter table

ALTER SCHEMA first_schema_name
RENAME TO second_schema_name;
相关文章
相关标签/搜索