PostgreSQL使用笔记
工作很多年了,对数据库使用再也不是初整博客时的小白了。
比起MySQL来,PostgreSQL的配置着实是有些复杂,这篇文章记录一些我认为有用的部分
PostgreSQL的安装
1.apt即可
$ sudo apt update
$ sudo apt install postgresql
PostgreSQL的重要配置文件
1.pg_hba.conf 入口限制文件,列表形式,允许多条规则
一般的VPS,加入以下配置即可全放开
host all all 0.0.0.0/0 scram-sha-256
2.postgresql.conf 核心配置文件
# 数据文件的目录所在,一般配置去数据盘非系统盘,如
data_directory = '/data/postgresql/15/main' # use data in another directory
# listen_addresses允许监听多个端口,如
listen_addresses = '127.0.0.1,192.168.0.1,192.168.0.2'
# 监听端口,用一个不常用的,如
port = 45376 # (change requires restart)
PostgreSQL的数据初始化
为了修改默认数据的位置,除了在核心配置里修改目录以外,
还得在集群初始化的时候指定目录,做法如下:
# 查看集群:
pg_lsclusters
# 首先干掉默认的集群
pg_dropcluster --stop 13 main
# 这样直接就把启动脚本、数据库等等全干掉了
# 创建一个新的集群
pg_createcluster -U postgres -d /data/pgdata -e utf8 --start 13 main
# 不要再手动折腾initdb,centos的做法太落后了
PostgreSQL的用户权限
postgreSQL的权限真的很扯,角色用户一体化,反人类的思维
假设这里要创建一个用户uaser_a,拥有数据库a_database的权限,可以这样
# 创建一个角色user_a
CREATE ROLE uaser_a WITH LOGIN PASSWORD 'your_password_here';
# 创建一个数据库a_database,并指定user_a为owner
CREATE DATABASE a_database OWNER uaser_a;
# 先拒绝所有人的连接
REVOKE CONNECT ON DATABASE a_database FROM PUBLIC;
# 再允许uaser_a包含连接在内的所有权限
GRANT ALL PRIVILEGES ON DATABASE a_database TO uaser_a;
删除无用的PostgreSQL用户
首先得确定,你在干啥。
# 把权限从halo移给postgres
# REASSIGN OWNED BY halo TO postgres;
# 删除halo的所有权限
DROP OWNED BY halo;
# 删除halo
DROP USER halo;