postgresql
1.安装
1.1 选择对应系统版本和数据库版本
- 这里选择的是centos7 postgresql-10版本
# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
# Install PostgreSQL:
sudo yum install -y postgresql10-server
# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
sudo systemctl enable postgresql-10
sudo systemctl start postgresql-10
2.配置
2.1 查找配置文件位置
-
切换到root用户给postgres设置密码,并切换到postgres用户
su passwd postgres su postgres
-
进入postgresql控制台
# 如果使用默认值,可以直接输入psql就能进入了 psql -U postgres -h 127.0.0.1 -p 5432 -d postgres
-
也可以在这里修改密码
ALTER USER postgres WITH PASSWORD 'postgres';
-
查找配置文件所在位置
select name,setting from pg_settings where category='File Locations';
-
退出控制台,进入配置文件所在文件夹
# 退出控制台 \q # 进入配置文件所在文件夹 cd /var/lib/pgsql/10/data/ # 查看文件下的配置文件 ls
2.2 postgresql.conf文件配置
-
使用vim打开此配置文件,在59行将地址改为’*'代表允许任何地址访问
-
port可以修改为其他端口,也可以使用默认值
2.3 pg_hba.conf 文件配置
TYPE 主机类型
1.local unix-domain socket 仅匹配localhost
2.host TCP/IP socket
3.hostssl ssl加密的TCP/IP socket
DATABASE 数据库名称
1.all 所有数据库,不匹配replication
2.replication
3.数据库名称 可以用多个逗号隔开,写多个数据库,也可以将多个数据库写入一个文件中,
用@前缀加文件名称读取文件内容
USER 用户名
1.all 所有用户名
2.用户名 多个用户时配置通数据库名称
ADDRESS 访问ip
1.ip/num的形式
2.num可选择0~32的数字,代表匹配的位数,ipv4是由32位二进制组成
例:
0.0.0.0/0 匹配任意主机地址
192.0.0.0/8 匹配以192开头的主机地址
192.168.0.0/16 匹配以192.168开头的主机地址
192.168.1.0/24 匹配以192.168.1开头的主机地址
192.168.1.1/32 匹配以192.168.1.1主机地址
METHOD 验证方式
1.peer 服务器和客户端在同一环境下免密码登录
2.ident 和peer类似,不需要服务器客户端在同一环境下,需要pg_iden.conf文件配置
3.password 明文密码认证
4.md5 采用md5加密的密码认证
5.trust 完全信任,忽略验证
2.4 重新加载配置文件
# 1. 用超级用户运行,进入psql控制台
SELECT pg_reload_conf();
# 2. 用UNIX的kill手动发起HUP信号
kill -HUP PID
# 3.使用pg_ctl命令触发SIGHUP信号
pg_ctl reload
2.5 开启postgresql服务
- 请注意,配置完文件之后,重启服务或重新加载配置文件生效
# 开启
systemctl start postgresql-10
# 重启
systemctl restart postgresql-10
# 关闭
systemctl stop postgresql-10
2.6 centos7防火墙设置
# 1.查看已开启的端口
firewall-cmd --zone=public --list-ports
# 2.开启防火墙端口 --zone=public 代表公共端口 tcp代表此端口为tcp连接 --permanent 永久开启
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 3.关闭防火墙端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# 4.重新加载防火墙规则 每次更改防火墙后,需要重新加载或者重启防火墙
firewall-cmd --reload
# 5.查看某端口状态
firewall-cmd --zone=public --query-port=80/tcp
# 6.查看防火墙状态
systemctl status firewalld
# 7.开启防火墙
systemctl start firewalld
# 8.关闭防火墙
systemctl stop firewalld
# 9.重启防火墙
systemctl restart firewalld
# 10.永久开启防火墙
systemctl enable firewalld
# 11.永久关闭防火墙
systemctl disable firewalld
3.数据库操作
3.1 创建数据库
# 1.切换到postgres用户,进入控制台
su postgres
psql
# 2.创建数据库,可以指定数据库所属用户
create database test_db with owner test_user;
# 3.将数据库权限赋予所属用户
grant all privileges on database test_db to test_user;
3.2 删除数据库
drop database test_db;
3.3 修改数据库名
alter database test_db rename to abc;
3.3 数据库导出
pg_dump -d test_db > test_db.sql
3.4 数据库导入
psql -d test_db < test_db.sql
4.其他配置
4.1 关闭数据库连接
- 删除数据库的时候,有其他连接存在,先关闭连接
select pg_terminate_backend(pid) from (select pid from pg_stat_activity where datname = 'test_db' ) a;
4.2 免输入密码
4.2.1 设置环境变量(方法1)
export PGPASSWORD=skytf
4.2.2 设置 .pgpass 密码文件(方法2)
vi /home/postgres/.pgpass
--格式
hostname:port:database:username:password
--范例
192.168.1.1:5432:test_db:test_user:woshimima
4.3.3 修改服务端 pg_hba.conf(方法3)
# 前面介绍过,在相应的位置加入此行
host test_db test_user 192.168.1.1/32 trust