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;