加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

PostgreSQL连接和认证选项

发布时间:2020-12-13 16:45:51 所属栏目:百科 来源:网络整理
导读:Linux下面经常用到psql命令。 首先把账号切换到root账号。 #CentOS Debiansu root#Ubuntusudo -i#切换到postgres账号su - postgres 该账号下即可输入psql命令。演示代码如下 root@debian:~# su - postgrespostgres@debian:~$postgres@debian:~$ psqlpsql (9.

Linux下面经常用到psql命令。

首先把账号切换到root账号。

#CentOS Debian
su root
#Ubuntu
sudo -i
#切换到postgres账号
su - postgres

该账号下即可输入psql命令。演示代码如下

root@debian:~# su - postgres
postgres@debian:~$
postgres@debian:~$ psql
psql (9.6.5)
输入 "help" 来获取帮助信息.

postgres=# create database test;
CREATE DATABASE
postgres=# c test
您现在已经连接到数据库 "test",用户 "postgres".
test=#
#退出psql命令
test=# q
postgres@debian:~$

psql帮助信息如下

postgres@debian:~$ psql --help
psql是PostgreSQL 的交互式客户端工具。
使用方法:
  psql [选项]... [数据库名称 [用户名称]]
通用选项:
  -c,--command=命令        执行单一命令(SQL或内部指令)然后结束
  -d,--dbname=数据库名称   指定要连接的数据库 (默认:"postgres")
  -f,--file=文件名      从文件中执行命令然后退出
  -l,--list             列出所有可用的数据库,然后退出
  -v,--set=,--variable=NAME=VALUE
                           设置psql变量NAME为VALUE
                           (例如,-v ON_ERROR_STOP=1)
  -V,--version            输出版本信息,然后退出
  -X,--no-psqlrc         不读取启动文档(~/.psqlrc)
  -1 ("one"),--single-transaction
                          作为一个单一事务来执行命令文件(如果是非交互型的)
  -?,--help[=options]     显示此帮助,然后退出
      --help=commands      列出反斜线命令,然后退出
      --help=variables     列出特殊变量,然后退出

输入和输出选项:
  -a,--echo-all          显示所有来自于脚本的输入
  -b,--echo-errors        回显失败的命令
  -e,--echo-queries      显示发送给服务器的命令
  -E,--echo-hidden        显示内部命令产生的查询
  -L,--log-file=文件名  将会话日志写入文件
  -n,--no-readline       禁用增强命令行编辑功能(readline)
  -o,--output=FILENAME 将查询结果写入文件(或 |管道)
  -q,--quiet             以沉默模式运行(不显示消息,只有查询结果)
  -s,--single-step       单步模式 (确认每个查询)
  -S,--single-line        单行模式 (一行就是一条 SQL 命令)

输出格式选项 :
  -A,--no-align           使用非对齐表格输出模式
  -F,--field-separator=STRING
             为字段设置分隔符,用于不整齐的输出(默认:"|")
  -H,--html             HTML 表格输出模式
  -P,--pset=变量[=参数]    设置将变量打印到参数的选项(查阅 pset 命令)
  -R,--record-separator=STRING
             为不整齐的输出设置字录的分隔符(默认:换行符号)
  -t,--tuples-only      只打印记录i
  -T,--table-attr=文本   设定 HTML 表格标记属性(例如,宽度,边界)
  -x,--expanded           打开扩展表格输出
  -z,--field-separator-zero
                           为不整齐的输出设置字段分隔符为字节0
  -0,--record-separator-zero
                           为不整齐的输出设置记录分隔符为字节0

联接选项:
  -h,--host=主机名        数据库服务器主机或socket目录(默认:"/var/run/postgresql")
  -p,--port=端口        数据库服务器的端口(默认:"5432")
  -U,--username=用户名    指定数据库用户名(默认:"postgres")
  -w,--no-password       永远不提示输入口令
  -W,--password           强制口令提示 (自动)

更多信息,请在psql中输入"?"(用于内部指令)或者 "help"(用于SQL命令),
或者参考PostgreSQL文档中的psql章节.

臭虫报告至 <pgsql-bugs@postgresql.org>.
postgres@debian:~$

PostgreSQL默认不允许非本机连接,非本机连接数据库服务器需要修改pg_hba.conf配置文件,Windows系统下配置文件位于安装目录data文件夹。

添加一行,本文添加10.1.1网段256个地址允许MD5方式连接数据库。

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
host    all    		all    		10.1.1.0/24             md5
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost,by a user with the
# replication privilege.
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

连接类型有local、host、hostssl和hostnossl4种类型。区别在于是否本地连接与是否需要加密连接。

address是指一个或多个网络地址或域名。例如192.168.0.1(1台主机)、192.168.0/24是指192.168.0网段全部主机。test.example.com是指example.com域名下主机名为test主机。该字段仅适用于host,hostssl和hostnossl记录。

下面解释各种连接方法(METHOD)。

trust是指无条件允许连接。 该方法允许任何能够连接到PostgreSQL数据库服务器用户任意方式连接,而不需要密码或任何其他身份验证。

reject是指无条件拒绝连接。

md5方式指客户端提供MD5加密密码进行身份验证。

scram-sha-256是指执行SCRAM-SHA-256身份验证以验证用户密码。

password方式是指客户端提供明文密码进行身份验证。 由于密码通过网络以明文形式发送,因此不应在不受信任网络上使用。

gss方式使用 GSSAPI 来认证用户。仅适用于 TCP/IP 连接。

ssapi方式使用 SSPI 来验证用户。仅在 Windows 上可用。

ident方式通过联系客户端上ident服务器来获取客户端操作系统用户名,并检查用户名是否与请求数据库用户名是否匹配。该身份验证只能在TCP/IP连接上使用。当为本地连接指定用户时,将使用对等身份验证。

peer方式是指从操作系统获取客户端操作系统用户名,并检查它是否与请求数据库用户名匹配。 这只适用于本地连接。

ldap方式使用LDAP服务器进行身份验证。

radius方式使用RADIUS服务器进行身份验证。

ssl方式使用SSL客户端证书进行身份验证。

pam方式使用操作系统提供可插入身份验证模块(PAM)服务进行身份验证。

bsd是指使用操作系统提供BSD验证服务进行验证。

演示一个Linux完整连接windows PostgreSQL数据库服务器,连接完成后操作方式和本地操作基本一致。

#服务器IP10.1.1.1 
#数据库名test
#用户名postgres
postgres@debian:~$ psql -h 10.1.1.1 -p 5432 test postgres
#输入用户密码
用户 postgres 的口令:
#客户端版本9.6.5、服务器版本10.0
psql (9.6.5,服务器 10.0)
WARNING: psql major version 9.6,server major version 10.
         Some psql features might not work.
输入 "help" 来获取帮助信息.

test=#

数据库连接完成后还有很多命令。例如c、d和password等。

#连接test数据库
c test
#查看数据库test全部表信息和主键、外键等信息
test=# d
                        关联列表
 架构模式 |          名称           |  类型  |  拥有者
----------+-------------------------+--------+----------
 public   | Student                 | 数据表 | postgres
 public   | test                    | 数据表 | postgres
 public   | workerInformation       | 数据表 | postgres
(3 行记录)

test=#
test=#
#查看表信息
test=# d test
   数据表 "public.test"
  栏位  |  类型   | 修饰词
--------+---------+--------
 id     | integer |
 number | integer |

test=#
#修改当前用户密码
test=# password
输入新的密码:
再次输入:
test=#

更加详细连接帮助请参考postgresql手册。

参考链接

https://www.postgresql.org/docs/current/static/app-psql.html

https://www.postgresql.org/docs/current/static/auth-pg-hba-conf.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读