BlueXIII's Blog

热爱技术,持续学习

0%

Postgres运维笔记

官网

https://www.postgresql.org/
版本选择: 12.1, 11.6, 10.11, 9.6.16, 9.5.20, 9.4.25

参考文档

电子书

  • PostgreSQL实战
  • PostgreSQL10.1中文手册
  • 数据架构师的PostgreSQL修炼

macos下brew安装

暂时选择较流行的10.11版本

1
2
3
4
5
mv /usr/local/var/postgres /usr/local/var/postgres.old

brew install postgresql@10

echo 'export PATH="/usr/local/opt/postgresql@10/bin:$PATH"' >> ~/.zshrc
1
2
3
4
默认端口 5431,默认数据库 postgres,默认用户密码同与macos当前用户相同
查看版本号: pg_ctl -V
二进制路径: /usr/local/Cellar/postgresql@10/10.11
数据库路径: initdb /usr/local/var/postgres

brew服务启停

1
2
3
brew services run postgresql@10
brew services start postgresql@10
brew services stop postgresql@10

手工启停

1
2
3
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log status
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log stop -s -m fast

客户端

psql

1
2
psql -h 127.0.0.1 -p 5432 -d postgres -U yourname
psql -d postgres

pgcli

https://www.pgcli.com/

一个增强的psql命令行工具,提供高亮与代码补全,可替代psql

1
2
3
pip3 install pgcli

pgcli -d postgres

GUI

  • pgAdmin4 WEB版UI较差,可适用于数据库管理,界面逻辑清晰,可显示DDL便于学习
  • Navicat 老版本对PG支持差需使用V15.X,UI较好但隐藏过多细节,可适用于数据库管理与SQL编写
  • DataGrip 仅适用于SQL编写,全平台,在IDEA中已集成,对PG支持略差
  • DBeaver 仅适用于SQL编写,全平台,对PG支持略好,UI较差

    没有特别突出的方案。大而全选Navicat,偏重管理选择pgAdmin4,偏重开发运维选择DataGrip

psql控制台命令

\password:设置当前登录用户的密码
\h:查看SQL命令的解释,比如\h select。
?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\conninfo:列出当前数据库和连接的信息。
\password [user]: 修改用户密码
\q:退出

常用管理SQL

创建用户

1
2
CREATE USER testuser WITH PASSWORD 'testuser';
CREATE ROLE testuser WITH LOGIN PASSWORD 'testuser';

在PG中,用户和角色的概念相同

创建删除数据库

1
2
CREATE DATABASE testdb OWNER testuser;
DROP DATABASE testdb;

创建SCHEMA

1
CREATE SCHEMA testschema2 AUTHORIZATION zorrouser;

将DB权限赋予用户

1
GRANT ALL PRIVILEGES ON DATABASE testdb to testuser;

用户赋权限

1
2
ALTER ROLE testuser CREATEDB;
ALTER ROLE testuser WITH LOGIN;

其它赋权语句

1
2
ALTER SCHEMA public OWNER TO testuser;
ALTER ROLE testuser WITH PASSWORD 'testuser';

常用数据类型

http://www.postgres.cn/docs/9.3/datatype.html

类型 解释 长度
integer 存储整数 4字节
bigint 存储整数,大范围 8字节
numeric 用户指定的精度,精确 可自定
serial 自动递增整数 4字节
bigserial 大的自动递增整数 8字节
varchar(size) 字符串
text 可变长度字符串
timestamp 日期和时间(无时区) 8字节
boolean 它指定true或false的状态 1字节

远程访问

1
2
3
4
5
6
7
8
vi postgresql.conf
listen_addresses = '*'

vi pg_hba.conf
# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 0.0.0.0/0 md5

sudo service postgresql restart

数据导入导出

备份与恢复