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可以修改为其他端口,也可以使用默认值(修改完之后连接数据库端口就不能使用缺省值了)

    • 方法1:psql -p 5436 (后面加上-p 新端口连接)
    • 方法2:改变端口缺省值,在用户家目录下的.bashrc文件最后写入export PGPORT=新端口,source ~/.bashrc

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


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 user test_user;  # 创建用户
ALTER USER test_user WITH SUPERUSER;  # 将用户作为超级用户(视情况而定)

# 3.创建数据库,可以指定数据库所属用户
create database test_db with owner test_user;

# 4.将数据库权限赋予用户
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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM