Linux下postgresql的安装
一、数据库的安装
我们依照官网给出的下载引导,就可以领到对应操作系统版本的安装命令,本文是在CentOS7root用户下安装的postgres12,官网给出的是rpm包安装:
(1)更新源并安装软件包:
# 更新软件源
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# 下载并安装postgres12
yum install -y postgresql12-server
(2)初始化数据库:
# 初始化数据库
/usr/pgsql-12/bin/postgresql-12-setup initdb
# 添加数据库服务
systemctl enable postgresql-12
(3)数据库服务管理:
# 启动数据库服务
systemctl start postgresql-12
# 停止数据库服务
systemctl stop postgresql-12
# pg_ctl start/stop/reload -D DATA_DIR
rpm格式包为postgres的服务编撰了系统服务/usr/lib/systemd/system/postgresql-12.service深度linux,systemctl会读取/usr/lib/systemd/system下服务名.service文件,之后调用相关的命令。postgres的服务管理命令是pg_ctl,在使用该命令时,须要通过-D选项指定pg数据目录,或则提早设置好PGDATA环境变量。读service文件可以大致了解pg相关的目录结构:
目录说明
安装目录
/usr//pgsql-12(bin为二补码目录;lib为相关依赖共享库文件,包含了client端)
数据目录
/var/lib/pgsql/12/data
了解了postgres的目录结构后便捷我们后续便捷卸载干净postgres的相关文件deepin linux,以免上次安装时出错,例如initdb命令须要确保所使用的数据目录是一个空文件夹,否则命令会执行失败linux postgresql 安装程序下载,下边瞧瞧怎么卸载rpm安装的postgres:
(4)卸载postgresql数据库:
# 1 停止服务, 一般情况下卸载先停止服务
systemctl stop postgresql-12
# 2 查询已安装的rpm包
rpm -qa | grep postgres
# 3 卸载rpm包, 粘贴2中列出的包名(会删除rpm解压的相关目录)
rpm -e ...
# 4 卸载残留 数据目录
rm -rf /var/lib/pgsql/12/data
# 5 可选项 删除用户
# userdel -r postgres
二、数据库的使用:
我们初始化数据库时,initdb程序默认创建了postgres用户和组,数据库操作使用psql命令linux postgresql 安装程序下载,假如单纯键入psql命令,是默认使用当前命令行同名的登入用户和数据库,而如今数据库只创建了一个相关的角色postgres,而我们并不晓得postgres用户的密码,shell环境的登陆密码,默认新建后的postgres用户数据库登陆密码为空。
(1)第一次登陆数据库:
错误提示(root用户下):psql:error:FATAL:Peerauthenticationfailedforuser“postgres”
# 1 切换到postgres用户, -选项同时切换环境到用户目录
[root@localhost ~]# sudo su - postgres
# 2 psql登录
bash-4.2$ psql
# 3 改变角色postgres密码
postgres=# password postgres
# 4 退出postgres管理命令行
postgres=# q
(2)psql命令选项说明:
psql
-h # 指明远程主机地址,默认本地127.0.0.1
-p # 指明远程主机端口,默认5432
-U # 指明登录用户
-d # 指明所选数据库
# 默认是所登录命令行用户同名的角色以及数据库
(3)数据库命令行使用:不仅我们熟悉的SQL句子外,还有pg独有的命令
postgres=# l # 列出所有数据库
postgres=# c DB_NAME # 连接使用数据库
postgres=# d # 列出所有数据库表名
postgres=# d TABLE_NMAE # 列出表结构
create user hr with password 'Abcd1234';
postgres=# q # 退出数据库命令行
postgres=# create user USER_NAME with password 'xxx'; # 创建角色
postgres=# create database DB_NMAE owner USER_NAME; # 创建数据库
三、postgres配置文件:
postgresql主要涉及两个配置文件pg_hba.conf、postgresql.conf,postgresql.auto.conf用于覆盖postgresql.conf配置的内容,由于前者中的选项是在太多了,你可以专门配置postgresql.auto.conf文件,使配置生效。
配置文件的详尽解释可以专项搜索,这儿只是快速使用上手。
(1)postgresql开启远程联接:
[postgresql.conf]
# 默认使用本地连接,允许所有主机连接请用*
listen_address = 'localhost'
-> listen_address = '*'
# 配置最大连接数,和数据库连接池相关
-> max_connections = 100
[pg_hba.conf] ban-allow(禁止-允许) 客户端认证文件
# 默认本机无密码可连接, 投入使用需开启远程任何主机可密码连接
# host all all 127.0.0.1/32 trust
-> host all all 0.0.0.0/0 md5
配置了远程联接后,若服务正在运行,须要重启服务(pg_ctl--reload),倘若配置了远程联接,还是联接不上,还须要把postgres服务端口进行防火墙放行:
# 查看防火墙服务
servcie firewalld status
# 添加端口
firewall-cmd --zone=public --add-port=5432/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 查看当前已开放端口
firewall-cmd --list-ports
(2)postgresql日志配置:见postgres日志配置
四、postgresql备份、postgresql恢复:
(1)全库备份
可以使用-F指定输出文件格式,默认使明文SQL文本§,(c表示postgres适用于pg_restore的顾客化归档,文件重排压缩)
pg_dump -h XXX -U XXX -d XXX -f 'XXX.sql'
pg_dump -h XXX -U XXX -d XXX -Fc -f 'XXX.dump'
(2)全库恢复
# 需要提前创建数据库、用户等,使用psql命令登录,见二(2)
pg_restore -h XXX -U XXX -d XXX -f 'XXX'
单表或则多表查询的导入,通常导入到csv文件便捷观察数据,这个命令属于数据库命令行使用的,须要psql先登入。
(3)数据导入
COPY (SQL) TO 'DDD/XXX.csv' WITH CSV HEADER;
COPY TABLE_NMAE TO 'DDD/XXX.csv' WITH CSV HEADER;
COPY TABLE_NAME(COLUMN_NAME, ...) TO 'DDD/XXX.csv' WITH CSV HEADER;
(4)数据导出
COPY TABLE_NAME FROM 'DDD/XXX.csv' WITH (FORMAT csv, DELIMITER ',', HEADER true);
通常就是把一个表的全部列(带标题)导入即可(执行一个没有符合条件的SQL句子导入WITHCSVHEADER),只填充必填列再进行导出。也可以psql命令直接执行COPY命令:
# psql -c选项 可以连接数据库并执行命令后退出
psql -h XXX -U XXX -d XXX -c "COPY (SELECT * FROM test WHERE 1=2) TO '/home/apple/out.csv' WITH CSV HEADER;"
这就是关于postgres的初步安装以及命令简介,关于python的数据库操作在后续将会介绍。