login role:拥有数据库的登陆权限spring
member role:一个role继承其余role的权限,从而成为member rolesql
group role:拥有member role的role数据库
建立可login roleubuntu
建立group rolespringboot
删除role服务器
查询role架构
\du
一个数据库角色能够有一系列属性,这些属性定义他的权限,以及与客户认证系统的交互。
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
数据库对象在被建立时都会被赋予一个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;
建立数据库。
CREATE DATABASE database_name;
删除数据库。
drop database database_name;
psql命令登陆数据库
参数含义以下:-U指定用户,-d指定数据库,-h指定服务器,-p指定端口
psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432
以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
schema对database中的table进行逻辑分组管理。
schema(架构)是指定的表集合。 它还能够包含视图,索引,序列,数据类型,运算符和函数。
DB之间互相独立,故而DB各自的schema、table也独立
DB下属schema(nums >=1),初始有一个public schema
schema下属“相关table”
### 添加 | 语法
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;
### 单个对象移动
ALTER TABLE table_name SET SCHEMA another_schema_name;
### 全部对象移动
应用条件:第二模式不存在同名对象。若是存在,则为每一个对象执行alter table
ALTER SCHEMA first_schema_name RENAME TO second_schema_name;