數據庫服務器推薦配置python |
CPU 雙核2.5GHz,內存 32G以上linux |
數據庫服務器操做系統c++ |
CentOS Linux release 7.2.1511 (Core)sql |
數據庫服務器版本數據庫 |
Postgresql9.6vim |
PostgreSQL 是一個免費的對象-關係數據庫服務器(ORDBMS),在靈活的BSD許可證下發行。api
PostgreSQL 開發者把它念做 post-gress-Q-L。數組
PostgreSQL 的 Slogan 是 "世界上最早進的開源關係型數據庫"。安全
在咱們開始學習 PostgreSQL 數據庫前,讓咱們先了解下 ORDBMS 的一些術語:bash
數據庫: 數據庫是一些關聯表的集合。
數據表: 表是數據的矩陣。在一個數據庫中的表看起來像一個簡單的電子表格。
列: 一列(數據元素) 包含了相同的數據, 例如郵政編碼的數據。
行:一行(=元組,或記錄)是一組相關的數據,例如一條用戶訂閱的數據。
冗餘:存儲兩倍數據,冗餘下降了性能,但提升了數據的安全性。
主鍵:主鍵是惟一的。一個數據表中只能包含一個主鍵。你可使用主鍵來查詢數據。
外鍵:外鍵用於關聯兩個表。
複合鍵:複合鍵(組合鍵)將多個列做爲一個索引鍵,通常用於複合索引。
索引:使用索引可快速訪問數據庫表中的特定信息。索引是對數據庫表中一列或多列的值進行排序的一種結構。相似於書籍的目錄。
參照完整性: 參照的完整性要求關係中不容許引用不存在的實體。與實體完整性是關係模型必須知足的完整性約束條件,目的是保證數據的一致性。
函數:經過函數,能夠在數據庫服務器端執行指令程序。
索引:用戶能夠自定義索引方法,或使用內置的 B 樹,哈希表與 GiST 索引。
觸發器:觸發器是由SQL語句查詢所觸發的事件。如:一個INSERT語句可能觸發一個檢查數據完整性的觸發器。觸發器一般由INSERT或UPDATE語句觸發。 多版本併發控制:PostgreSQL使用多版本併發控制(MVCC,Multiversion concurrency control)系統進行併發控制,該系統向每一個用戶提供了一個數據庫的"快照",用戶在事務內所做的每一個修改,對於其餘的用戶都不可見,直到該事務成功提交。
規則:規則(RULE)容許一個查詢能被重寫,一般用來實現對視圖(VIEW)的操做,如插入(INSERT)、更新(UPDATE)、刪除(DELETE)。
數據類型:包括文本、任意精度的數值數組、JSON 數據、枚舉類型、XML 數據
等。
全文檢索:經過 Tsearch2 或 OpenFTS,8.3版本中內嵌 Tsearch2。
NoSQL:JSON,JSONB,XML,HStore 原生支持,至 NoSQL 數據庫的外部數據包裝器。
數據倉庫:能平滑遷移至同屬 PostgreSQL 生態的 GreenPlum,DeepGreen,HAWK 等,使用 FDW 進行 ETL。
yum intall -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake yum install gcc* readline-devel |
adduser postgres passwd postgres 更改用戶 postgres 的密碼 。 新的 密碼: 無效的密碼: 它基於字典單詞 從新輸入新的 密碼: passwd: 全部的身份驗證令牌已經成功更新。 id postgres uid=1001(postgres) gid=1001(postgres) 組=1001(postgres) |
tar -zxvf postgresql-9.6.2.tar.gz cd postgresql-9.6.2 |
./configure --prefix=/opt/pgsql/ --with-perl--with-libxml--with-libxslt |
gmake gmake install |
mkdir /opt/pgdata chown postgres:postgres /opt/pgdata su - postgres /opt/pgsql/bin/initdb -D /opt/pgdata |
vim .bashrc export PGDATA=/opt/pgdata export PGHOME=/opt/pgsql export PATH=.:$PATH:$PGHOME/bin:$PGDATA/bin source .bashrc |
cd /opt/pgdata vim postgresql.conf 將 #listen_addresses = 'localhost' 的註釋去掉並改成 listen_addresses = '*' vim pg_hba.conf 在文件末尾添加: host all all 0.0.0.0/0 md5,表示容許任何IP鏈接 |
pg_ctl start |
cp /opt/postgres/postgresql-9.6.2/contrib/start-scripts/linux /etc/init.d/postgresql vim /etc/init.d/postgresql #! /bin/sh # Installation prefix prefix=/opt/pgsql # Data directory PGDATA="/opt/pgdata" # Who to run the postmaster as, usually "postgres". (NOT "root") PGUSER=postgres # Where to keep a log file PGLOG="$PGDATA/serverlog" # The path that is to be used for the script PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DAEMON="$prefix/bin/postmaster" # What to use to shut down the postmaster PGCTL="$prefix/bin/pg_ctl"
set -e # Only start if we can find the postmaster. test -x $DAEMON || { echo "$DAEMON not found" if [ "$1" = "stop" ] then exit 0 else exit 5 fi }
# If we want to tell child processes to adjust their OOM scores, set up the # necessary environment variables. Can't just export them through the "su". if [ -e "$PG_OOM_ADJUST_FILE" -a -n "$PG_CHILD_OOM_SCORE_ADJ" ] then DAEMON_ENV="PG_OOM_ADJUST_FILE=$PG_OOM_ADJUST_FILE PG_OOM_ADJUST_VALUE=$PG_CHILD_OOM_SCORE_ADJ" fi
# Parse command line parameters. case $1 in start) echo -n "Starting PostgreSQL: " test -e "$PG_OOM_ADJUST_FILE" && echo "$PG_MASTER_OOM_SCORE_ADJ" > "$PG_OOM_ADJUST_FILE" su - $PGUSER -c "$DAEMON_ENV $DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1 echo "ok" ;; stop) echo -n "Stopping PostgreSQL: " su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast" echo "ok" ;; restart) echo -n "Restarting PostgreSQL: " su - $PGUSER -c "$PGCTL stop -D '$PGDATA' -s -m fast -w" test -e "$PG_OOM_ADJUST_FILE" && echo "$PG_MASTER_OOM_SCORE_ADJ" > "$PG_OOM_ADJUST_FILE" su - $PGUSER -c "$DAEMON_ENV $DAEMON -D '$PGDATA' &" >>$PGLOG 2>&1 echo "ok" ;; reload) echo -n "Reload PostgreSQL: " su - $PGUSER -c "$PGCTL reload -D '$PGDATA' -s" echo "ok" ;; status) su - $PGUSER -c "$PGCTL status -D '$PGDATA'" ;; *) # Print help echo "Usage: $0 {start|stop|restart|reload|status}" 1>&2 exit 1 ;; esac
exit 0 chmod +x /etc/init.d/postgresql service postgresql start |
psql 建立用戶"folio_admin"並設置密碼: postgres=# create role folio_admin with password 'calis123'login; 建立數據庫folio_db,全部者爲folio_admin: postgres=# create database folio_db owner folio_admin; 將folio_db數據庫的全部權限賦予folio_admin,不然folio_admin只能登陸psql,沒有任何數據庫操做權限: postgres=#grant all privileges on database folio_db to folio_admin; =================================================================== 建立okapi運行須要的數據庫以及帳號信息 建立用戶"okapi"並設置密碼: postgres=# create role okapi with password 'okapi25'login; 建立數據庫okapi,全部者爲okapi: postgres=# create database okapi owner okapi; 將okapi數據庫的全部權限賦予okapi,不然okapi只能登陸psql,沒有任何數據庫操做權限: postgres=#grant all privileges on database okapi to okapi; |
下載Navicat Premium工具嘗試鏈接,讓操做更便捷
注:若是沒法鏈接,把防火牆端口放開
firewall-cmd --zone=public --add-port=5432/tcp --permanent firewall-cmd --reload |
psql -U pname -d database // pname 表示postgres的登陸用戶名,database 則表示要訪問的數據庫 |
\l |
\d database / |
\d tablename/ |
\c database |
CREATE DATEBASE database_name; |
CREATE SCHEMA schema_name; |
select * from information_schema.schemata; |
select * from information_schema.tables where table_schema = 'schema_name'; |
CREATE ROLE role_name [...]; [...]爲可多選角色屬性參數,參數可分別爲: 登錄(login):具備login屬性的角色能夠鏈接數據庫,一個帶有login屬性的角色能夠等同於「數據庫用戶」,由於數據庫用戶建立的時候默認自帶login屬性. 超級用戶(superuser):超級用戶擁有至高無上的權限,可是這個權限分配的時候,必定要當心,想要建立超級用戶,必須使用帶超級用戶的角色去建立帶「超級用戶」的角色 . 建立數據庫(createdb):建立數據庫屬性,顧名思義就是擁有「建立數據庫」屬性的角色能夠建立數據庫,對於超級用戶的角色來講,自身能夠建立數據庫,不用帶「建立數據庫」屬性 . 建立角色(createrole):帶有「建立角色」屬性的角色能夠建立其餘角色。通常帶有「建立角色」屬性的角色還能夠刪除和更改其餘角色(刪除和更改只限於普通用戶) 口令(password):只有在客戶認證方法要求與數據庫創建鏈接必須使用口令的時候, 口令才比較重要. 在建立好角色後,若是須要修改的話,可使用alter role語句修改
|
將名字爲schema_name的schema的全部權限給予role_name角色; grant all on schema schema_name to role_name; 將名字爲schema_name的schema下面全部的表的操做權限給予role_name角色; grant all on all tables in schema schema_name to role_name;
若是你不許備將全部的權限都給予role_name角色,能夠給予部分的權限,每一個權限值之間以逗號分隔,而權限的明細以下:
SELECT:該權限用來查詢表或是表上的某些列,或是視圖,序列。 INSERT:該權限容許對錶或是視圖進行插入數據操做,也可使用COPY FROM進行數據的插入。 UPDATE:該權限容許對錶或是或是表上特定的列或是視圖進行更新操做。 DELETE:該權限容許對錶或是視圖進行刪除數據的操做。 TRUNCATE:容許對錶進行清空操做。 REFERENCES:容許給參照列和被參照列上建立外鍵約束。 TRIGGER:容許在表上建立觸發器。 CREATE:對於數據庫,容許在數據庫上建立Schema;對於Schema,容許對Schema上建立數據庫對象;對於表空間,容許把表或是索引指定到對應的表空間上(在Oracle中,咱們是用quota子句或是unlimited tablespace權限來控制)。該權限與Oracle上的CREATE類權限徹底不一樣了。 CONNECT:容許用戶鏈接到指定的數據庫上。 TEMPORARY或是TEMP:容許在指定數據庫的時候建立臨時表。 EXECUTE:容許執行某個函數。 USAGE:對於程序語言來講,容許使用指定的程序語言建立函數;對於Schema來講,容許查找該Schema下的對象;對於序列來講,容許使用currval和nextval函數;對於外部封裝器來講,容許使用外部封裝器來建立外部服務器;對於外部服務器來講,容許建立外部表。 ALL PRIVILEGES:表示一次性給予能夠授予的權限。 |