Linux服务器上的Postgresql 安装与配置
作者:mmseoamin日期:2023-12-18

Linux服务器上的Postgresql 安装与配置

首先说明下我安装的是Postgresql 版本为12.4

官网下载地址:

https://ftp.postgresql.org/pub/source/v12.4/postgresql-12.4.tar.gz

1.准备

准备好 postgresql 的安装包,以下操作以 12.4 版本为例。

建议使用 root 用户新建普通用户“postgres”仅用于安装 postgresql 数据库。

请在root用户下操作,命令如下:

$ groupadd postgres 
$ useradd postgres -d /home/postgres -g postgres 
$ passwd postgres

请记住设计的密码,如果密码和用户名重复还会提醒你,但是还是会生效

tips:如果忘记了新创建的用户密码,

请切换到root并使用命令格式:passwd+“用户名”

会要求你输入新密码,并再重复输入,同样如果密码和用户名重复还会提醒你,但是还是会生效

2.安装依赖的系统组件

切换到 root 用户安装依赖的系统组件,命令如下:

请先Su root

再执行以下命令:

$ yum -y install gcc perl-ExtUtils-Embed readline-devel zlib-devel 
openssl-devel pam pam-devel libxml2-devel libxslt-devel tcl tcl-devel 
python-devel docbook-style-dsssl flex bison openjade 

3.解压并安装(记得新建存放压缩包的目录并放入)

切换到 postgres 用户

请先su postgres

目录下解压安装包:

$ tar -xvf postgresql-12.4.tar.gz

请记住你解压的目录,会多次用到!

请记住你解压的目录,会多次用到!

请记住你解压的目录,会多次用到!

进入解压的目录,

创建data和log目录

mkdir /所在目录/data
mkdir /所在目录/log

执行预编译命令:

cd +所在目录

./configure --prefix=/home/postgresql-12.4 --with-pgport=5432 --with-perl --with-tcl --with-python --with-openssl --with-pam --without-ldap --with-libxml --with-libxslt

成功后的部分日志如下:

以下是日志不需要执行

config.status: creating src/include/pg_config_ext.h 
config.status: src/include/pg_config_ext.h is unchanged 
config.status: creating src/interfaces/ecpg/include/ecpg_config.h 
config.status: src/interfaces/ecpg/include/ecpg_config.h is unchanged 
config.status: linking src/backend/port/tas/dummy.s to 
src/backend/port/tas.s 
config.status: linking src/backend/port/dynloader/linux.c to 
src/backend/port/dynloader.c 
config.status: linking src/backend/port/sysv_sema.c to 
src/backend/port/pg_sema.c 
config.status: linking src/backend/port/sysv_shmem.c to 
src/backend/port/pg_shmem.c 
config.status: linking src/backend/port/dynloader/linux.h to 
src/include/dynloader.h 
config.status: linking src/include/port/linux.h to 
src/include/pg_config_os.h 

编译和安装,继续执行命令:

$ gmake world 
$ gmake install-world

4. 配置环境变量

root用户下

 vi /etc/profile

新增行输入

export PGHOME=/你自己的安装目录/postgresql
export PGDATA=/你自己的安装目录/postgresql/data
export PATH=$PATH:JAVA_HOME/bin:$PGHOME/bin

记得保存退出 -wq

5.初始化数据库

不要在 root 用户下初始数据库,否则会报错

initdb: cannot be run as root
Please log in (using, e.g., “su”) as the (unprivileged) user that will
own the server process.

还是在用户postgres下,记得切换

进入安装后的 postgresql 目录,执行初始化数据库命令:

/home/sdjk/soft/postgresql-12.4/bin/initdb -D "/home/sdjk/soft/postgresql-12.4/data" -U pgdts -W

需要输入、再次输入数据库管理员账号密码:

Linux服务器上的Postgresql 安装与配置,在这里插入图片描述,第1张

初始化成功后,出现以下信息:

Success. You can now start the database server using: 
/home/postgres/pg12.4/bin/pg_ctl -D /home/postgres/pgdata -l 
logfile start

5.启动

使用初始化完成后系统提供的启动命令,如下:

$ /home/postgres/pg12.4/bin/pg_ctl -D /home/postgres/pgdata -l logfile start

启动成功会出现如下日志:

server starting 

6.验证

验证 postgresql 是否启动成功:

$ ps -ef|grep postgres

Linux服务器上的Postgresql 安装与配置,在这里插入图片描述,第2张

登录数据库

psql -U postgres -d postgres

6.可能遇到的问题

1.xx文件夹 could not change directory to “/root”: 权限不够

是不是用root而不是新用户解压的 要改一下使用chown设置文件夹的所有子文件夹和文件的所有权

在root下操作 chown -R postgres:root +目录即可 如:

chown -R postgres:root /home/postgresql-12.4