A. GnuPG命令行
GnuPG (Gnu Privacy Guard) 是一個自由且開源的加密工具,版本為1.4.1。它由Free Software Foundation提供,且完全無任何保證。這個程序支持公鑰加密,如RSA、RSA-E、RSA-S、ELG-E和DSA,以及對稱加密演算法,如3DES、CAST5、BLOWFISH、AES、AES192、AES256和TWOFISH。散列演算法包括MD5、SHA1、RIPEMD160、SHA256、SHA384和SHA512。同時,它還支持壓縮功能,如不壓縮、ZIP、ZLIB和BZIP2。
在命令行操作中,gpg的基本語法是gpg [選項] [文件名],其默認行為根據輸入數據自動決定。一些主要的命令和選項包括:
範例中,如要為Bob簽名並加密文件,可以使用命令:`-se -r Bob [file]`。對於密鑰管理,你可以通過`--edit-key`進行編輯,`save`保存並退出,`help`查看幫助信息,以及`fpr`、`list`等選項來查看和操作密鑰信息。
GnuPG(GNU Privacy Guard或GPG)是一個以GNU通用公共許可證釋出的開放源碼用於加密或簽名的軟體,可用來取代PGP。大多數gpg軟體僅支持命令行方式,一般人較難掌握。由於gpg軟體開放源代碼,很難隱藏後門,因此比pgp等商業軟體安全。
B. 如何安裝PostgreSQL
PostgreSQL安裝:
一、windows下安裝過程
安裝介質:postgresql-9.1.3-1-windows.exe(46M),安裝過程非常簡單,過程如下:
1、開始安裝:
2、選擇程序安裝目錄:
註:安裝 PostgreSQL 的分區最好是 NTFS 格式的。PostgreSQL 首要任務是要保證數據的完整性,而 FAT 和 FAT32 文件系統不能提供這樣的可靠性保障,而且 FAT 文件系統缺乏安全性保障,無法保證原始數據在未經授權的情況下被更改。此外,PostgreSQL 所使用的"多分點"功能完成表空間的這一特徵在FAT文件系統下無法實現。
然而,在某些系統中,只有一種 FAT 分區,這種情況下,可以正常安裝 PostgreSQL,但不要進行資料庫的初始化工作。安裝完成後,在 FAT 分區上手動執行 initdb.exe 程序即可,但不能保證其安全性和可靠性,並且建立表空間也會失敗。
3、選擇數據存放目錄:
4、輸入資料庫超級用戶和創建的OS用戶的密碼
註:資料庫超級用戶是一個非管理員賬戶,這是為了減少黑客利用在 PostgreSQL 發現的缺陷對系統造成損害,因此需要對資料庫超級用戶設置密碼,如下圖所示,安裝程序自動建立的服務用戶的用戶名默認為 postgres。
5、設置服務監聽埠,默認為5432
6、選擇運行時語言環境
註:選擇資料庫存儲區域的運行時語言環境(字元編碼格式)。
在選擇語言環境時,若選擇"default locale"會導致安裝不正確;同時,PostgreSQL 不支持 GBK 和 GB18030 作為字元集,如果選擇其它四個中文字元集:中文繁體 香港(Chinese[Traditional], Hong Kong S.A.R.)、中文簡體 新加坡(Chinese[Simplified], Singapore)、中文繁體 台灣(Chinese[Traditional], Taiwan)和中文繁體 澳門(Chinese[Traditional], Marco S.A.R.),會導致查詢結果和排序效果不正確。建議選擇"C",即不使用區域。
----我選擇了default localt,安裝正確;建議選擇default localt。
7、安裝過程(2分鍾)
8、安裝完成
安裝完成後,從開始文件夾可以看到:
在安裝目錄可以看到:
其中:data存放數據文件、日誌文件、控制文件、配置文件等。
uninstall-postgresql.exe用於卸載已安裝的資料庫管理系統。
pg_env.bat里配置了資料庫的幾個環境變數,內容如下:
二、pgAdmin(大象)
對於每種資料庫管理系統,都有相當多的設計與管理工具(可視化界面管理工具),有的是資料庫廠商自己提供的(一般都至少有一個),有的是第三方公司開發的,你甚至可以自己寫一個簡單易用的管理工具。例如Oracle的Oracle SQL Developer(自己開發的)、PLSQL Developer(第三方公司開發的)、SQL Server Management Studio(自己開發的)、http://www.oschina.net/project(開源中國)網站上提供的個人或組織開發的簡易小巧的管理工具。
PostgreSQL就有好幾款流行的管理工具,例如:pgAdmin、navicat_pgsql、phppgsql等。
pgAdmin是一個針對PostgreSQL資料庫的設計和管理介面,可以在大多數操作系統上運行。軟體用C++編寫,具有很優秀的性能。
pgadmin 是與 Postgres 分開發布的,可以從www.pgadmin.org下載。目前裝個全功能的PostgreSQL資料庫,自帶該管理工具。
打開pgAdmin,可以看到在第一部分安裝的本地資料庫的屬性,如下圖所示:
圖中可以看出,新安裝的PostgreSQL資料庫管理系統帶有一個資料庫postgres;已建好兩個表空間:pg_default、pg_global。
initdb.exe初始化的兩個默認表空間pg_global、pg_default。資料庫默認的表空間pg_default 是用來存儲系統目錄對象、用戶表、用戶表index、和臨時表、臨時表index、內部臨時表的默認空間,他是模板資料庫template0和template1的默認表空間。initdb.exe初始化的兩個默認表空間pg_global、pg_default。資料庫默認的表空間pg_global是用來存儲共享系統目錄的默認空間。
pg_default 為 PostgreSQL也可以理解成系統表空間,它對應的物理位置為 $PGDATA/base目錄。
在PostgreSQL(pg_catalog)下可以看到postgers資料庫的一些數據字典和數據字典視圖。
新建一個伺服器連接,連接遠程linux伺服器上的PostgreSQL資料庫(假設已有遠程linux上已安裝好PostgreSQL資料庫管理系統):
得到資料庫屬性如下圖所示:
圖中可以看出,該遠程資料庫管理系統上建有兩個資料庫:postgres、cpost;四個表空間:pg_default、pg_global、pis_data、pis_index。
三、pgsql
對於每種資料庫管理系統,都會提供一個命令行管理介面,例如Oracle的sqlplus,SQL Server的isql和osql等。
凡是用圖形管理界面可以實現的功能原則上都可以通過命令行界面命令實現。兩者各有優缺點,使用場合不同。在windows下當然常用圖形管理界面,因為在圖像管理界面中往往都嵌有命令行工具,而在unix和linux下,當然就常用命令行工具了,除了我們在類unix下主要使用字元界面的原因外,還因為大部分情況下我們只能通過telnet或ssh工具遠程連接伺服器進行操作,此時也只能使用命令行了。
從開始目錄打開SQL shell(pgsql),該可執行程序為E:\PostgreSQL\bin\psql.exe。輸入密碼得到如下圖界面:
也可以在修改了系統環境變數Path之後(增加PostgreSQL\bin目錄),從命令行直接啟動pgsql。
至此,PostgreSQL在Windows下安裝完畢。
C. 如何在CentOS 7/6.5/6.4 下安裝PostgreSQL 9.3 與 phpPgAdmin
1.安裝PostgreSQL
首先根據你的伺服器架構添加PostgreSQL庫:
使用以下命令來更新庫:
yum update
使用以下命令來安裝PostgreSQL:
yum install postgresql93-server postgresql93-contrib
使用以下命令來初始化PostgreSQL資料庫:
在CentOS 6.x 系統中:
service postgresql-9.3 initdb
在CentOS 7系統中:
/usr/pgsql-9.3/bin/postgresql93-setup initdb
然後啟動PostgreSQL服務並使之開機自啟:
在CentOS 6.x 系統中:
service postgresql-9.3 start
chkconfig postgresql-9.3 on
在CentOS 7系統中:
systemctl enable postgresql-9.3
systemctl start postgresql-9.3
2.調整Iptables/Firewall
接下來調整防火牆出站規則:
在CentOS 6.x系統中:
vi /etc/sysconfig/iptables
並添加以下行
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
退出並保存文件。重啟iptables服務:
service iptables restart
在CentOS系統中:
firewall-cmd --permanent –add-port=5432/tcp
firewall-cmd --permanent –add-port=80/tcp
firewall-cmd --reload
3.訪問PostgreSQL常用的命令提示符
默認情況下資料庫名和用戶名都是postgres。切換至用戶以執行相關操作:
su – postgres
輸入以下命令登陸:
psql
會有以下樣例輸出:
psql (9.3.5)
Type "help" for help.
Postgres=#
可通過輸入q退出postgresql返回命令終端:
4.設置用戶密碼
登陸至postgres命令提示符界面
su – postgres
psql
然後使用命令設置密碼
postgres=# password postgres
Enter new password:
Enter it again:
postgres=# q
輸入命令以建立PostgreSQL系統管理工具
postgres=# CREATE EXTENSION adminpack;
CREATE EXTENSION
5.創建用戶和資料庫
例如:用戶名:senthil 密碼:centos 資料庫名:mydb
轉到postgres用戶
su – postgres
創建用戶senthil
$ createuser senthil
創建資料庫
$ createdb mydb
現在登陸至psql提示符界面,為用戶senthil設置密碼及授權對資料庫mydb的訪問:
$ psql
psql (9.3.5)
Type "help" for help.
postgres=# alter user senthil with encrypted password 'centos';
ALTER ROLE
postgres=# grant all privileges on database mydb to senthil;
GRANT
postgres=#
6.刪除用戶和資料庫
首先轉到postgres界面
su – postgres
輸入命令
$ dropdb <database-name>
刪除用戶名可輸入
$ dropuser <user-name>
7.配置PostgreSQL-MD5認證
MD5認證需要客戶端提供一個MD5-encrypted 密碼以便身份驗證。你需要編輯 /var/lib/pgsql/9.3/data/pg_hba.conf文件:
vi /var/lib/pgsql/9.3/data/pg_hba.conf
添加或修改的行如下:
[...]
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 192.168.1.0/24 md5
# IPv6 local connections:
host all all ::1/128 md5
[...]
重啟postgresql服務以應用更改
在CentOS 6.x系統中
service postgresql-9.3 restart
在CentOS 7系統中
systemctl restart postgresql-9.3
8.配置PostgreSQL-Configure TCP/IP
默認情況下,TCP/IP連接是不可行的,所以其他計算機用戶不能連接到postgresql。編輯文件 /var/lib/pgsql/9.3/data/postgresql.conf可以允許連接:
vi /var/lib/pgsql/9.3/data/postgresql.conf
找到下面的行:
[...]
#listen_addresses = 'localhost』
[...]
#port = 5432
[...]
把兩行都取消並設置為你的postgresql伺服器IP地址或設置為「*」監聽所有客戶端。如下所示:
listen_addresses = '*'
port = 5432
重啟以應用更改
在CentOS6.x系統中:
/etc/init.d/postgresql-9.3 restart
在CentOS7系統中:
systemctl restart postgresql-9.3
9.使用phpPgAdmin管理PostgreSQL
phpPgAdmin是使用PHP編寫的基於web的管理工具,用於管理PostgreSQL。它只適用與PostgreSQL RPM庫。