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;
相關文章
相關標籤/搜索