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

postgreSQL | 数据库管理

发布时间:2020-12-13 16:55:40 所属栏目:百科 来源:网络整理
导读:数据库管理 1、Role login role:拥有数据库的登录权限 member role:一个role继承其他role的权限,从而成为member role group role:拥有member role的role ###问题:角色不存在 1.1 创建、删除、查询 创建可login role 创建group role 删除role 查询role

数据库管理

1、Role

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

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

group role:拥有member role的role

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

1.1 创建、删除、查询

创建可login role

创建group role

删除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;

1.3 Role权限

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

使用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;

2、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 '222221';

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

create database pgdb_test owner springboot;

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

###### 一、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;

(编辑:李大同)

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

    推荐文章
      热点阅读