本文采取RPM包离线安装的方式安装Postgresql 9.6版本。

目录

步骤1:安装包准备

步骤2:安装RPM包

初始化数据库

启动postgres数据库

Postgresql 卸载

常用Postgresql命令:

一键重启postgresql脚本

常见报错

报错1:安装rpm包缺少依赖

报错2:su postgres 显示bash-4.2$的问题

报错3:s.PGSQL.5432.lock"不存在的问题

报错4:报错链接不上,是因为没有关闭防火墙!!!

报错5:Postgresql FATAL: could not create semaphores: No space left on device

PostgreSQL的 pg_hba.conf 配置参数详解


步骤1:安装包准备

官网下载

RepoView: PostgreSQL PGDG 9.6 Updates RPMs

我下载好的rpm包:

postgresql9.6.zip-PostgreSQL文档类资源-CSDN下载

步骤2:安装RPM包

创建postgres用户

useradd postgres 

passwd postgres

安装rpm包

rpm -ivh postgresql96-*

Postgres 安装程序会在 /var 和 /usr 下创建文件夹

  • /var/lib/pgsql:用于存放 Postgres 数据库默认的数据文件夹
  • /usr/pgsql-9.6:用于存放 Postgres 数据库的命令,依赖库及文档目录等信息
  • /var/lib/pgsql/9.6/data:用户存放 PG 默认配置的 pg_hba.conf,postgresql.conf 配置文件

为了简化后期运维,将 postgresql 加入系统 PATH,并测试 postgres 命令是否有返回,测试安装是否成功

创建文件夹:

mkdir -p /var/lib/pgsql/{data,xlog_archive}  

chown -R postgres:postgres /var/lib/pgsql/  

chmod 0700 /var/lib/pgsql/data

编辑环境变量

vi /etc/profile

# 在文件最后加入以下语句

export PGDATA=/var/lib/pgsql/data

export PATH=$PATH:/usr/pgsql-9.6/bin

使环境变量生效

source /etc/profile

postgres --version

初始化数据库

配置好数据后(如果配置了自定义路径)数据库默认是未启动状态。 需要进行初始化。

法1:root用户下  sudo -u postgres /usr/pgsql-9.6/bin/initdb -D /data/postgres/

法2: su - postgres

initdb -D /var/lib/pgsql/data

如果要使得其他服务器连接到pg上,需要更改参数设置:

修改postgresql.conf

vi /var/lib/pgsql/data/postgresql.conf

listen_addresses = '*'

修改pg_hba.conf

vi /var/lib/pgsql/data/pg_hba.conf

增加:host    all             all             0.0.0.0/0               md5

启动postgres数据库

su postgres

pg_ctl -D /var/lib/pgsql/data/ start

相应的停止pg数据库的命令是:

pg_ctl -D /var/lib/pgsql/data/ stop

登录pg

psql -h localhost -U postgres -d postgres -W

psql命令详解

  • -h host, 指定连接的Postgres数据库IP地址
  • -U username: 指定连接数据库的用户名
  • -d database: 指定连接的数据库名
  • -p port: 指定数据库连接的服务端口
  • -w: 表示不提示用户输入密码
  • -W : 表示验证数据库用户密码
  • -l : 表示列出Postgres可用的数据库信息

Postgresql 卸载

yum remove postgresql*

然后查看是否还有

 rpm -qa|grep postgres

常用Postgresql命令:

查看所有数据库: =# \l 或者 \list
列出当前数据库的表: =# \d
创建数据库: =# create database mydb;
切换数据库: =# \c mydb
在当前数据库插入表: =# create table test(id int,body varchar(100));
新建用户:  =# create user test with password 'test';
修改账号密码: =# alter user postgres with encrypted password 'mypass';
赋予指定账号到指定数据库权限: =# grant all privileges on database mydb to test;
移除指定账号到指定数据库权限: =# revoke all privileges on database mydb to test;

一键重启postgresql脚本

重启postgresql有时会有下面的报错3:could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": No such file or directory,可以用这个脚本命令一键重启pg:

脚本会检测如果pg正在运行则重启,如果pg未运行,则启动

sh start_postgresql.sh  /data/XXX(你的启动地址)

Linux中一键重启postgresql的脚本命令-PostgreSQL文档类资源-CSDN下载

常见报错

报错1:安装rpm包缺少依赖

报错error: Failed dependencies:

        libxslt.so.1()(64bit) is needed by postgresql96-contrib-9.6.20-1PGDG.rhel6.x86_64

        libxslt.so.1(LIBXML2_1.0.11)(64bit) is needed by postgresql96-contrib-9.6.20-1PGDG.rhel6.x86_64

        libxslt.so.1(LIBXML2_1.0.18)(64bit) is needed by postgresql96-contrib-9.6.20-1PGDG.rhel6.x86_64

        libxslt.so.1(LIBXML2_1.0.22)(64bit) is needed by postgresql96-contrib-9.6.20-1PGDG.rhel6.x86_64

解决方案:

安装依赖即可:yum install libxslt

报错2:su postgres 显示bash-4.2$的问题

删除postgres用户,重新创建用户即可

userdel postgres

useradd postgres

注意:

删除重建用户后记得重新赋权限

chown -R postgres:postgres /var/lib/pgsql/  

报错3:s.PGSQL.5432.lock"不存在的问题

 FATAL:  could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": No such file or directory

< 2021-02-06 08:27:44.357 EST > LOG:  database system is shut down

解决方案:创建文件夹即可

 mkdir -p /var/run/postgresql/

chown -R postgres:postgres /var/run/postgresql/

报错4:报错链接不上,是因为没有关闭防火墙!!!

systemctl status firewalld

报错5:Postgresql FATAL: could not create semaphores: No space left on device

参考文章链接: 

Postgresql FATAL: could not create semaphores: No space left on device_dazuiba008的博客-CSDN博客

对于我自己的情况,修改上述参数无效,把vnc的进程都杀掉后,重启pg成功的。

PostgreSQL的 pg_hba.conf 配置参数详解

PostgreSQL的 pg_hba.conf 配置参数详解_将臣三代的博客-CSDN博客_pg_hba.conf

忘记密码怎么办,可以更改 pg_hba.conf文件:

修改data目录下的 pg_hba.conf 文件
local   all             all                          md5=>修改成trust
保存退出,然后使用pg_ctl reload重新读取pg_hba.conf文件,使配置生效
进入postgresql数据库
alter user postgres with password '你要设置的密码';
然后再把pg_hba.conf修改的trust改回原来的md5
 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐