PostgreSQL数据库配置

技术 · 2022-04-09

由于阿里云即将到期了,打算迁移到腾讯轻量云,通过代理200多一点到手,还可以升级一下配置,迁移的过程中顺便记录一下Postgresql的安装过程,以便当前博客的开发用。

安装

官方给的教程已经很详细了,这里不再过多介绍。

Red Hat系参考这里

Debian系参考这里

Windows参考这里

其它的也都可以在官网找到,主要记录一下安装后的一系列操作。

进行数据库初始化

#初始化db
/usr/pgsql-12/bin/postgresql-12-setup initdb

创建数据库及用户

#切换到postgres用户
su postgres

#执行psql连接postgresql
psql

#创建testDb数据库
create database testDb;

#创建用户名为:test,密码为:test123的用户,
CREATE USER test WITH PASSWORD 'test123';

#赋予testDb数据库的所有权限给test用户
GRANT ALL PRIVILEGES ON DATABASE testDb TO test;

开放远程访问

  1. 查找配置文件所在位置

    #用上面的方式进入psql命令下,并执行下面语句
    select name,setting from pg_settings where name = 'config_file';
    #或下面获取所有的配置
    select name,setting from pg_settings where category='File Locations';
  2. 修改监听地址为外网地址或所有地址(用*代替)

    #修改/var/lib/pgsql/12/data/postgresql.conf
    listen_addresses = '*'
  3. 增加连接方式

    #修改/var/lib/pgsql/12/data/pg_hba.conf增加下面配置
    host    all             all             0.0.0.0/0               md5
  4. 重启postgresql服务

    systemctl restart postgresql-12

psql操作命令

\h:查看SQL命令的解释,比如\h select。

?:查看psql命令列表。

\l:列出所有数据库。

\c [database_name]:切换到数据库,默认为当前用户对应的默认数据库。

\d:列出当前数据库的所有表格。

\d [table_name]:列出某一张表格的结构。

\du:列出所有用户。

\e:打开文本编辑器。

\conninfo:列出当前数据库和连接的信息。

\password:设置密码

\q:退出psql

关于连接方式

查了一下,这里大概记录一下:
TYPE
该项为连接方式,有四种:local 、host、hostssl、hostnossl local 这条记录匹配通过 Unix 域套接字进行的联接企图, 没有这种类型的记录,就不允许 Unix 域套接字的联接。 host 这条记录匹配通过TCP/IP网络进行的联接尝试.他既匹配通过ssl方式的连接,也匹配通过非ssl方式的连接。 注意:要使用该选项你要在postgresql.conf文件里设置listen_address选项,不在listen_address里的IP地址是无法匹配到的。因为默认的行为是只在localhost上监听本地连接。 hostssl 这条记录匹配通过在TCP/IP上进行的SSL联接企图。要使用该选项,服务器编译时必须使用--with-openssl选项,并且在服务器启动时ssl设置是打开的

DATABASE
指定连接的数据库,all代表所有数据库,也可以指定数据库名,replication表示匹配一条replication连接,它不指定一个特定的数据库,一般在流复制中使用,比如主从复制。

USER
为连接的用户,all代表所有用户,也可以指定用户。

ADDRESS
为指定匹配的客户端的地址,可以是一个主机名或一个IP地址范围,本选项只能在连接方式是host,hostssl或者hostnossl的时候指定。

METHOD
为认证方式,主要有以下几种:

trust 无条件地允许联接,这个方法允许任何可以与PostgreSQL 数据库联接的用户以他们期望的任意 PostgreSQL 数据库用户身份进行联接,而不需要口令。

reject 联接无条件拒绝,常用于从一个组中"过滤"某些主机。

md5 要求客户端提供一个 MD5 加密的口令进行认证,这个方法是允许加密口令存储在pg_shadow里的唯一的一个方法。

password 和"md5"一样,但是口令是以明文形式在网络上传递的,不建议在外网用这种方式。

gss 使用GSSAPI认证用户,只适用于 TCP/IP 连接。

sspi 使用SSPI认证用户,只适用于 Windows 连接。

peer 获取客户端的操作系统的用户名并判断他是否匹配请求的数据库名,这只适用于本地连接。

ldap 使用LDAP服务进行验证。

radius 使用RADIUS服务进行验证。

cert 使用SSL服务进行验证。

pam 使用操作系统提供的可插入的认证模块服务 (Pluggable Authentication Modules)(PAM)来认证。

pgsql 数据库
Theme Jasmine by Kent Liao