從零開始的PostgreSQL學(xué)習(xí):命令行客戶端
PostgreSQL(PG)是一個客戶端/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫,實際處理工作總是由客戶端提交到服務(wù)器端完成的。
1.1 ?數(shù)據(jù)目錄初始化
在PG安裝完成后,所有的客戶端實用工具都存儲在/bin文件夾下。其中,initdb可以用于創(chuàng)建數(shù)據(jù)庫數(shù)據(jù)目錄,包括系統(tǒng)運行所必需的數(shù)據(jù)庫對象以及配置文件:
initdb -D /directory/to/your/database
完成后,可在該目錄下找到PG_hba.conf和postgresql.conf兩個文件,分別提供訪問控制和數(shù)據(jù)庫行為配置??紤]到數(shù)據(jù)庫的實際使用場景,使用Unix Socket進(jìn)行連接的情況很少,因此不予考慮。若要啟動SSL連接,需首先在數(shù)據(jù)目錄下放置公鑰文件server.crt和私鑰server.key(可以是自簽名證書),并在postgresql.conf中指定
tcpip_socket = true
ssl = true
兩項。隨后啟動數(shù)據(jù)庫:
PG_ctl -D /directory/to/your/database -l ?/directory/to/your/database/logfile.txt start
退出時將start換為stop。
1.2 ?用戶和數(shù)據(jù)庫創(chuàng)建
createuser和createdb兩個程序用于創(chuàng)建用戶和數(shù)據(jù)庫,創(chuàng)建的用戶和數(shù)據(jù)庫記錄是全局的,而不是限于某個數(shù)據(jù)庫目錄,因此就算刪除了數(shù)據(jù)庫數(shù)據(jù)目錄,也仍然需要再次重置用戶和數(shù)據(jù)庫。首先應(yīng)創(chuàng)建用戶:
createuser someuser -A -d -E –host=127.0.0.1 --port=5432 –password
-A表示不允許創(chuàng)建新用戶,-d表示可以創(chuàng)建新的數(shù)據(jù)庫,-E表示要求加密密碼(非明文)。輸入后,會提示要求輸入密碼。隨后創(chuàng)建數(shù)據(jù)庫:
createdb dbname someuser
此時創(chuàng)建一個名為dbname的數(shù)據(jù)庫,其所有者是someuser。
1.3 ?命令行管理程序
psql用于實現(xiàn)數(shù)據(jù)管理。默認(rèn)情況下,psql是使用Unix Socket的,考慮到這里使用TCP連接,最好在PG_hba.conf中設(shè)置訪問權(quán)限:
hostssl dbname someuser 127.0.0.1 255.255.255.255 md5
當(dāng)建立SSL連接時應(yīng)當(dāng)手動指定主機(jī):
psql dbname someuser –host=123456
此時會要求輸入密碼。連接后如下所示:

輸入\q退出客戶端,\e進(jìn)入編輯器模式(Linux下是vi,Windows下是記事本),在編輯器退出時執(zhí)行編輯器保存在一個臨時文件中的SQL。如果要執(zhí)行外部SQL文件,則需要在psql命令行中指定:
psql ?dbname username –host=127.0.0.1 -f /location/to/sql -o /location/to/output