Postgresql数据库安装和常见的报错问题
本文采取RPM包离线安装的方式安装Postgresql 9.6版本。步骤1:安装包准备官网下载https://yum.postgresql.org/9.6/redhat/rhel-6-x86_64/repoview/postgresqldbserver96.group.html步骤2:安装RPM包创建postgres用户useradd postgrespasswd postgres安装rpm包rp
本文采取RPM包离线安装的方式安装Postgresql 9.6版本。
目录
报错2:su postgres 显示bash-4.2$的问题
报错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
更多推荐
所有评论(0)