由于阿里云即将到期了,打算迁移到腾讯轻量云,通过代理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;
开放远程访问
查找配置文件所在位置
#用上面的方式进入psql命令下,并执行下面语句 select name,setting from pg_settings where name = 'config_file'; #或下面获取所有的配置 select name,setting from pg_settings where category='File Locations';
修改监听地址为外网地址或所有地址(用*代替)
#修改/var/lib/pgsql/12/data/postgresql.conf listen_addresses = '*'
增加连接方式
#修改/var/lib/pgsql/12/data/pg_hba.conf增加下面配置 host all all 0.0.0.0/0 md5
重启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)来认证。