从零开始的PostgreSQL学习:命令行客户端
PostgreSQL(PG)是一个客户端/服务器结构的数据库,实际处理工作总是由客户端提交到服务器端完成的。
1.1 数据目录初始化
在PG安装完成后,所有的客户端实用工具都存储在/bin文件夹下。其中,initdb可以用于创建数据库数据目录,包括系统运行所必需的数据库对象以及配置文件:
initdb -D /directory/to/your/database
完成后,可在该目录下找到PG_hba.conf和postgresql.conf两个文件,分别提供访问控制和数据库行为配置。考虑到数据库的实际使用场景,使用Unix Socket进行连接的情况很少,因此不予考虑。若要启动SSL连接,需首先在数据目录下放置公钥文件server.crt和私钥server.key(可以是自签名证书),并在postgresql.conf中指定
tcpip_socket = true
ssl = true
两项。随后启动数据库:
PG_ctl -D /directory/to/your/database -l /directory/to/your/database/logfile.txt start
退出时将start换为stop。
1.2 用户和数据库创建
createuser和createdb两个程序用于创建用户和数据库,创建的用户和数据库记录是全局的,而不是限于某个数据库目录,因此就算删除了数据库数据目录,也仍然需要再次重置用户和数据库。首先应创建用户:
createuser someuser -A -d -E –host=127.0.0.1 --port=5432 –password
-A表示不允许创建新用户,-d表示可以创建新的数据库,-E表示要求加密密码(非明文)。输入后,会提示要求输入密码。随后创建数据库:
createdb dbname someuser
此时创建一个名为dbname的数据库,其所有者是someuser。
1.3 命令行管理程序
psql用于实现数据管理。默认情况下,psql是使用Unix Socket的,考虑到这里使用TCP连接,最好在PG_hba.conf中设置访问权限:
hostssl dbname someuser 127.0.0.1 255.255.255.255 md5
当建立SSL连接时应当手动指定主机:
psql dbname someuser –host=123456
此时会要求输入密码。连接后如下所示:

输入\q退出客户端,\e进入编辑器模式(Linux下是vi,Windows下是记事本),在编辑器退出时执行编辑器保存在一个临时文件中的SQL。如果要执行外部SQL文件,则需要在psql命令行中指定:
psql dbname username –host=127.0.0.1 -f /location/to/sql -o /location/to/output