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库。