目录
数据库安装
数据库初始化
配置修改
1、修改监听范围
2、修改数据库用户密码
3、开启远程连接
附件内容:PostgreSQL数据迁移
方式一,从新初始化数据库在导出导入
方式二:存储文件物理迁移
数据库安装
安装包下载请参考PG官网(根据官方提示,红帽6以后的系统光盘自带了PostgreSQL的安装环境)
PostgreSQL: Linux downloads (Red Hat family)
所以搭建本地yum源后直接使用yum安装即可
#yum install postgresql-server
数据库初始化
根据官方文档提升,安装后初始化数据库,注册服务以及启动服务
对于 RHEL / Rocky Linux / CentOS / SL / OL 7、8、9 或 Fedora 36 及更高版本的派生发行版:
# postgresql-setup --initdb
# systemctl enable postgresql.service
# systemctl start postgresql.service
适用于 RHEL / CentOS / SL / OL 6
# service postgresql initdb
# chkconfig postgresql on
初始化后有提示默认路径: /var/lib/pgsql/data
配置修改
1、修改监听范围
vim打开 /var/lib/pgsql/data/o/postgresql.conf文件,查找listen_addresses配置项,取消注释,并将localhost更改为“*”,表示任意ip都可以访问数据库,如下图所示
2、修改数据库用户密码
vim打开 /var/lib/pgsql/data/pg_hba.conf文件,找到# IPV4行下的本机地址行并将ident更改为trust,表示本机可以跳过密码直接登录数据库,如下所示
警告:修改完数据库密码后务必将该参数改回为ident,并重启数据库,否则所有服务器都将能免密访问该数据库
# IPV4 local connections;
host all all 127.0.0.1/32 trust
切换到postgres用户(该用户是安装pg是自动创建的)并修改数据库内置账号postgres用户密码
[root@wangxfa]# su - postgres
执行psql登录数据库,并查看数据库密码表,可以看见当前postgres密码为空
[postgres@wangxfa] $ psql
postgres=# select usename,passwd from pg_shadow;
username | passwd
-----------------------------
postgres |
(1 row)
#执行命令修改密码
postgres=# alter user postgres PASSWD '你要指定的密码';
ALTER ROLE
3、开启远程连接
vim打开 /var/lib/pgsql/data/pg_hba.conf文件,找到# IPV4行下的本机地址行后添加如下内容,表示所有服务器可以通过密码认证访问数据库(需重新加载配置或者重启数据库),如下所示
# IPV4 local connections;
host all all 127.0.0.1/32 ident
host all all 0.0.0.0/0 md5
附件内容:PostgreSQL数据迁移
pg数据迁移有两种方式,第一种是在新环境重新初始化数据库,初始化过程中指定pgdata参数,然后将酒数据导入到新环境,第二种是新环境安装版本相同的pg,然后将存储目录迁移到新环境
方式一,从新初始化数据库在导出导入
1、在新环境创建新数据存储目录并更改属主
mkdir -p /data/pgsql/data
chown -R postgres:postgres /data/psql/data
2、初始化数据库并指定存储目录
postgresql-setup --initdb -D /data/pgsql/data
或者
/usr/bin/initdb -D /data/pgsql/data
3、修改系统服务文件配置
vim 打开/usr/lib/systemd/system/postgresql.service文件,修改Enviroment=PGDATA=/var/lib/pgsql/14/data/ 为/data/pgsql/data 后,保存退出编辑
4、重新加载配置文件
systemctl daemon-reload
5、重启数据库服务
systemctl restart postgres.service
5、将旧环境的数据导出再到新环境导入,
旧环境切换到pstgresql用户利用数据库用户postgres用户导出test数据库
[postgresql@wangxfa]$ pd_dump test - U postgres -p 5432 -f /app/dump_etl_230131.sql
将文件复制到新环境,更改属主为postgresql用户,系统切换到postgresql执行导入
[postgres@newDB]$ psql -d test -U postgres -f /app/dump_etl_230131.sql
方式二:存储文件物理迁移
1、停止旧环境的pg数据库
systemctl stop postgres.service
2、在新环境创建数据存储目录并更改属主
mkdir -p /data/pgsql/data
chown -R postgres:postgres /data/psql/data
3、将旧环境数据存储目录(/var/lib/pgsql/data)带权限复制到新环境的存储目录(/data/psql/data)
cp -rp /var/lib/pgsql/data/* /data/psql/data/
#如果是不同服务器,使用scp或者其他工具拷贝,然后手动递归赋权700
例如老环境是192.168.195.121,则在新环境上执行如下命令将老环境的存储目录及文件拉取到新环境
scp -r root@192.18.195.121:/var/lib/pgsql/data/* /data/psql/data/
chown -R postgres:postgres /data/psql/data
chmod -R 700 /data/psql/data/*
4、 修改系统服务文件配置
vim 打开/usr/lib/systemd/system/postgresql.service文件,修改Enviroment=PGDATA=/var/lib/pgsql/14/data/ 为/data/pgsql/data 后,保存退出编辑
4、重新加载配置文件
systemctl daemon-reload
5、重启数据库服务
systemctl restart postgres.service