postgreSQL | 数据库管理

前端之家收集整理的这篇文章主要介绍了postgreSQL | 数据库管理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

数据库管理

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 '111111';

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

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;
原文链接:https://www.f2er.com/postgresql/193962.html

猜你在找的Postgre SQL相关文章