PostgreSQL鏈接和認證選項

Linux下面常常用到psql命令。html

切換Linux系統帳號到root帳號。sql

#CentOS Debian
su root
#Ubuntu
sudo -i
#切換到postgres帳號
su - postgres
#嘗試不加-區別
su postgres

該帳號下便可輸入psql命令。演示代碼以下數據庫

root@debian:~# su - postgres
postgres@debian:~$
postgres@debian:~$ psql
psql (9.6.5)
輸入 "help" 來獲取幫助信息.

postgres=# create database test;
CREATE DATABASE
postgres=# \c test
您如今已經鏈接到數據庫 "test",用戶 "postgres".
test=#
#退出psql命令
test=# \q
postgres@debian:~$

psql幫助信息以下windows

postgres@debian:~$ psql --help
psql是PostgreSQL 的交互式客戶端工具。
使用方法:
  psql [選項]... [數據庫名稱 [用戶名稱]]
通用選項:
  -c,--command=命令        執行單一命令(SQL或內部指令)而後結束
  -d, --dbname=數據庫名稱   指定要鏈接的數據庫 (默認:"postgres")
  -f, --file=文件名      從文件中執行命令而後退出
  -l, --list             列出全部可用的數據庫,而後退出
  -v, --set=, --variable=NAME=VALUE
                           設置psql變量NAME爲VALUE
                           (例如,-v ON_ERROR_STOP=1)
  -V, --version            輸出版本信息, 而後退出
  -X, --no-psqlrc         不讀取啓動文檔(~/.psqlrc)
  -1 ("one"), --single-transaction
                          做爲一個單一事務來執行命令文件(若是是非交互型的)
  -?, --help[=options]     顯示此幫助,而後退出
      --help=commands      列出反斜線命令,而後退出
      --help=variables     列出特殊變量,而後退出

輸入和輸出選項:
  -a, --echo-all          顯示全部來自於腳本的輸入
  -b, --echo-errors        回顯失敗的命令
  -e, --echo-queries      顯示發送給服務器的命令
  -E, --echo-hidden        顯示內部命令產生的查詢
  -L, --log-file=文件名  將會話日誌寫入文件
  -n, --no-readline       禁用加強命令行編輯功能(readline)
  -o, --output=FILENAME 將查詢結果寫入文件(或 |管道)
  -q, --quiet             以沉默模式運行(不顯示消息,只有查詢結果)
  -s, --single-step       單步模式 (確認每一個查詢)
  -S, --single-line        單行模式 (一行就是一條 SQL 命令)

輸出格式選項 :
  -A, --no-align           使用非對齊表格輸出模式
  -F, --field-separator=STRING
             爲字段設置分隔符,用於不整齊的輸出(默認:"|")
  -H, --html             HTML 表格輸出模式
  -P, --pset=變量[=參數]    設置將變量打印到參數的選項(查閱 \pset 命令)
  -R, --record-separator=STRING
             爲不整齊的輸出設置字錄的分隔符(默認:換行符號)
  -t, --tuples-only      只打印記錄i
  -T, --table-attr=文本   設定 HTML 表格標記屬性(例如,寬度,邊界)
  -x, --expanded           打開擴展表格輸出
  -z, --field-separator-zero
                           爲不整齊的輸出設置字段分隔符爲字節0
  -0, --record-separator-zero
                           爲不整齊的輸出設置記錄分隔符爲字節0

聯接選項:
  -h, --host=主機名        數據庫服務器主機或socket目錄(默認:"/var/run/postgresql")
  -p, --port=端口        數據庫服務器的端口(默認:"5432")
  -U, --username=用戶名    指定數據庫用戶名(默認:"postgres")
  -w, --no-password       永遠不提示輸入口令
  -W, --password           強制口令提示 (自動)

更多信息,請在psql中輸入"\?"(用於內部指令)或者 "\help"(用於SQL命令),
或者參考PostgreSQL文檔中的psql章節.

臭蟲報告至 <pgsql-bugs@postgresql.org>.
postgres@debian:~$

PostgreSQL默認不容許非本機鏈接,非本機鏈接數據庫服務器須要修改pg_hba.conf配置文件,Windows系統下配置文件位於安裝目錄data文件夾。api

添加一行,本文添加10.1.1網段256個地址容許MD5方式鏈接數據庫。服務器

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all    		all    		10.1.1.0/24             md5
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

鏈接類型有local、host、hostssl和hostnossl4種類型。區別在因而否本地鏈接與是否須要加密鏈接。網絡

address是指一個或多個網絡地址或域名。例如192.168.0.1(1臺主機)、192.168.0/24是指192.168.0網段所有主機。test.example.com是指example.com域名下主機名爲test主機。該字段僅適用於host,hostssl和hostnossl記錄。架構

下面解釋各類鏈接方法(METHOD)。app

trust是指無條件容許鏈接。 該方法容許任何可以鏈接到PostgreSQL數據庫服務器用戶任意方式鏈接,而不須要密碼或任何其餘身份驗證。socket

reject是指無條件拒絕鏈接。

md5方式指客戶端提供MD5加密密碼進行身份驗證。

scram-sha-256是指執行SCRAM-SHA-256身份驗證以驗證用戶密碼。

password方式是指客戶端提供明文密碼進行身份驗證。 因爲密碼經過網絡以明文形式發送,所以不該在不受信任網絡上使用。

gss方式使用 GSSAPI 來認證用戶。僅適用於 TCP/IP 鏈接。

ssapi方式使用 SSPI 來驗證用戶。僅在 Windows 上可用。

ident方式經過聯繫客戶端上ident服務器來獲取客戶端操做系統用戶名,並檢查用戶名是否與請求數據庫用戶名是否匹配。該身份驗證只能在TCP/IP鏈接上使用。當爲本地鏈接指定用戶時,將使用對等身份驗證。

peer方式是指從操做系統獲取客戶端操做系統用戶名,並檢查它是否與請求數據庫用戶名匹配。 這隻適用於本地鏈接。

ldap方式使用LDAP服務器進行身份驗證。

radius方式使用RADIUS服務器進行身份驗證。

ssl方式使用SSL客戶端證書進行身份驗證。

pam方式使用操做系統提供可插入身份驗證模塊(PAM)服務進行身份驗證。

bsd是指使用操做系統提供BSD驗證服務進行驗證。

演示一個Linux完整鏈接windows PostgreSQL數據庫服務器,鏈接完成後操做方式和本地操做基本一致。

#服務器IP10.1.1.1 
#數據庫名test
#用戶名postgres
postgres@debian:~$ psql -h 10.1.1.1 -p 5432 test postgres
#輸入用戶密碼
用戶 postgres 的口令:
#客戶端版本9.6.五、服務器版本10.0
psql (9.6.5, 服務器 10.0)
WARNING: psql major version 9.6, server major version 10.
         Some psql features might not work.
輸入 "help" 來獲取幫助信息.

test=#

數據庫鏈接完成後還有不少命令。例如\c、\d和\password等。

#鏈接test數據庫
\c test
#查看數據庫test所有表信息和主鍵、外鍵等信息
test=# \d
                        關聯列表
 架構模式 |          名稱           |  類型  |  擁有者
----------+-------------------------+--------+----------
 public   | Student                 | 數據表 | postgres
 public   | test                    | 數據表 | postgres
 public   | workerInformation       | 數據表 | postgres
(3 行記錄)

test=#
test=#
#查看錶信息
test=# \d test
   數據表 "public.test"
  欄位  |  類型   | 修飾詞
--------+---------+--------
 id     | integer |
 number | integer |

test=#
#修改當前用戶密碼
test=# \password
輸入新的密碼:
再次輸入:
test=#

命令直接鏈接test數據庫。

postgres@debian:~$ psql \test
psql (9.6.5)
輸入 "help" 來獲取幫助信息.

test=#

PostgreSQL 安裝時,操做系統默認建立postgres系統用戶做爲數據庫系統超級管理員,登陸時無需輸入密碼,能夠經過修改pg_hba.conf文件修改登錄設置。

更加詳細鏈接幫助請參考postgresql手冊。

參考連接

https://www.postgresql.org/docs/current/static/app-psql.html

https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html

相關文章
相關標籤/搜索