发布时间:2025-12-10 12:49:22 浏览次数:4
零、口令文件:
在给出其它PostgreSQL客户端命令之前,我们需要先介绍一下PostgreSQL中的口令文件。之所以在这里提早说明该文件,是由于我们在后面的示例代码中会大量利用该文件,从而保证我们的脚本能够自动化完成。换句话说,如果在客户端命令履行时没有提供该文件,PostgreSQL的所有客户端命令均会被口令输入提示中断。
在当前用户的HOME目录下,我们需要手工创建文件名为 .pgpass的口令文件,这样就能够在我们连接PostgreSQL服务器时,客户端命令自动读取该文件已取得登录时所需要的口令信息。该文件的格式以下:
以上数据是用冒号作为分隔符,总共分为五个字段,分别表示服务器主机名(IP)、服务器监听的端口号、登录访问的数据库名、登录用户名和密码,其中前四个字段都可使用星号(*)来表示匹配任意值。见以下示例:
在学习后面的客户端命令之前,我们需要根据自己的利用环境手工创建该文件,以便后面所有的示例代码都会用到该口令文件,这样它们就都可以以批处理的方式自动完成。
一、createdb:
创建一个新的PostgreSQL数据库。该命令的使用方式以下:
1. 命令行选项列表:
| 选项 | 说明 |
| -D(–tablespace=tablespace) | 指定数据库的缺省表空间。 |
| -e(–echo) | 回显createdb生成的命令并且把它发送到服务器。 |
| -E(–encoding=encoding) | 指定用于此数据库的字符编码方式。 |
| -l(–locale=locale) | 指定用于此数据库的本地化设置。 |
| -O(–owner=owner) | 指定新建数据库的具有者,如果未指定此选项,该值为当前登录的用户。 |
| -T(–template=template) | 指定创建此数据库的模板数据库。 |
| -h(–host=host) | 指定PostgreSQL服务器的主机名。 |
| -p(–port=port) | 指定服务器的侦听端口,如不指定,则为缺省的5432。 |
| -U(–username=username) | 本次操作的登录用户名,如果-O选项没有指定,此数据库的Owner将为该登录用户。 |
| -w(–no-password) | 如果当前登录用户没有密码,可以指定该选项直接登录。 |
2. 利用示例:
#1. 以postgres的身份登录。(详情参照上面口令文件的内容)二、dropdb:
删除一个现有PostgreSQL数据库。
1. 命令行选项列表:
| 选项 | 说明 |
| -e(–echo) | 回显dropdb生成的命令并且把它发送到服务器。 |
| -i(–interactive) | 在做任何破坏性动作条件示。 |
| -q(–quiet) | 不显示响应。 |
| -h(–host=host) | 指定PostgreSQL服务器的主机名。 |
| -p(–port=port) | 指定服务器的监听端口,如不指定,则为缺省的5432。 |
| -U(–username=username) | 本次操作的登录用户名。 |
| -w(–no-password) | 如果当前登录用户没有密码,可以指定该选项直接登录。 |
2. 利用示例:
#以postgres的身份连接服务器,删除mydatabase数据库。三、reindexdb:
为一个指定的PostgreSQL数据库重建索引。
1. 命令行选项列表:
| 选项 | 说明 |
| -a(-all) | 重建全部数据库的索引。 |
| -e(–echo) | 回显reindexdb生成的命令并且把它发送到服务器。 |
| -i(–index=index) | 仅重建指定的索引。 |
| -q(–quiet) | 不显示响应。 |
| -s(–system) | 重建数据库系统表的索引。 |
| -t(–table=table) | 仅重建指定数据表的索引。 |
| -h(–host=host) | 指定PostgreSQL服务器的主机名。 |
| -p(–port=port) | 指定服务器的监听端口,如不指定,则为缺省的5432。 |
| -U(–username=username) | 本次操作的登录用户名。 |
| -w(–no-password) | 如果当前登录用户没有密码,可以指定该选项直接登录。 |
2. 利用示例:
四、vacuumdb:
搜集垃圾并且分析一个PostgreSQL数据库。
1. 命令行选项列表:
| 选项 | 说明 |
| -a(–all) | 清算所有数据库。 |
| -e(–echo) | 回显vacuumdb生成的命令并且把它发送到服务器。 |
| -f(–full) | 履行完全清算。 |
| -q(–quiet) | 不显示响应。 |
| -ttable[(column[,…])] | 仅仅清算或分析指定的数据表,字段名只是在与–analyze选项联合使用时才需要声明。 |
| -v(–verbose) | 在处理进程中打印详细信息。 |
| -z(–analyze) | 计算用于计划器的统计值。 |
| -h(–host=host) | 指定PostgreSQL服务器的主机名。 |
| -p(–port=port) | 指定服务器的监听端口,如不指定,则为缺省的5432。 |
| -U(–username=username) | 本次操作的登录用户名。 |
| -w(–no-password) | 如果当前登录用户没有密码,可以指定该选项直接登录。 |
2. 利用示例:
#清算全部数据库mydatabase。五、createuser:
定义一个新的PostgreSQL用户帐户,需要说明的是只有超级用户或是带有CREATEROLE权限的用户才可以履行该命令。如果希望创建的是超级用户,那末只能以超级用户的身份履行该命令,换句话说,带有CREATEROLE权限的普通用户没法创建超级用户。该命令的使用方式以下:
1. 命令行选项列表:
| 选项 | 说明 |
| -cnumber | 设置新创建用户的最大连接数,缺省为没有限制。 |
| -d(–createdb) | 允许该新建用户创建数据库。 |
| -D(–no-createdb) | 制止该新建用户创建数据库。 |
| -e(–echo) | 回显createuser生成的命令并且把它发送到服务器。 |
| -E(–encrypted) | 对保存在数据库里的用户口令加密。如果没有声明, 则使用缺省值。 |
| -i(–inherit) | 新创建的角色将自动继承它的组角色的权限。 |
| -I(–no-inherit) | 新创建的角色不会自动继承它的组角色的权限。 |
| -l(–login) | 新角色将被授与登录权限,该选项为缺省选项。 |
| -L(–no-login) | 新角色没有被授与登录权限。 |
| -N(–unencrypted) | 不对保存在数据库里的用户口令加密。如果没有声明, 则使用缺省值。 |
| -P(–pwprompt) | 如果给出该选项,在创建用户时将提示设置口令。 |
| -r(–createrole) | 新角色被授与创建数据库的权限。 |
| -R(–no-createrole) | 新角色没有被授与创建数据库的权限。 |
| -s(–superuser) | 新角色为超级用户。 |
| -S(–no-superuser) | 新角色不是超级用户。 |
| -h(–host=host) | 指定PostgreSQL服务器的主机名。 |
| -p(–port=port) | 指定服务器的监听端口,如不指定,则为缺省的5432。 |
| -U(–username=username) | 本次操作的登录用户名。 |
| -w(–no-password) | 如果当前登录用户没有密码,可以指定该选项直接登录。 |
2. 利用示例:
# 对有些没有缺省设置的选项,如-(d/D)、-(s/S)和-(r/R),如果在命令行中没有直接指定,那末在履行该命令是将会给出提示信息。六、dropuser:
删除一个PostgreSQL用户帐户,需要说明的是只有超级用户或带有CREATEROLE权限的用户可以履行该命令,如果要删除超级用户,只能通过超级用户的身份履行该命令。该命令的使用方式以下:
1. 命令行选项列表:
| 选项 | 说明 |
| -e(–echo) | 回显dropuser生成的命令并且把它发送到服务器。 |
| -i(–interactive) | 在做任何破坏性动作条件示。 |
| -h(–host=host) | 指定PostgreSQL服务器的主机名。 |
| -p(–port=port) | 指定服务器的监听端口,如不指定,则为缺省的5432。 |
| -U(–username=username) | 本次操作的登录用户名。 |
2. 利用示例: