干翻全岛蛙蛙 发表于 2024-7-27 08:13:39

Linux安装部署PostgreSQL具体步骤

一、版本和情况

选择要安装的版本举行下载:PostgreSQL: File Browser
我选的版本是:postgresql-14.7.tar.gz 操作体系是:CentOS-stream9
二、安装依赖包

在要安装postgresql数据库的Linux服务器(hostname:hdp001)上实行以下命令安装所需要的依赖包:
yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel python-devel gcc-c++ openssl-devel cmake 三、安装postgres

1、上传安装包并将postgresql-14.7.tar.gz解压,我是将安装包传的目次/home/appview/dev_package,目次自己决定

# cd /home/appview/dev_package/
# ll
-rw-r--r-- 1 appview appview290709007月6 16:55 postgresql-14.7.tar.gz
# pwd 2、解压压缩包

# tar -zxvf postgresql-14.7.tar.gz
# 解压过程略过了,太多了 3、进入解压后的文件夹

# cd postgresql-14.7.
# ls
aclocal.m4configure     contrib  doc             HISTORYMakefilesrc
config    configure.inCOPYRIGHTGNUmakefile.inINSTALLREADME 4、编译postgresql源码

# ./configure

#############################################################
这里我选择默认的安装目录所有不指定了,默认为/usr/local/pgsql
-–prefix=prefix 安装到prefix指向的目录;
--without-readline 选项的作用是禁用对Readline库的使用,用于命令行编辑和历史记录
我在内网安装的时候通常加上这个,不加的话会报错,无法进行编译下面这个
############################################################
# 以下根据需求自行选择
-–bindir=dir    安装应用程序到dir;默认为prefix/bin
-–with-docdir=dir   安装文档到dir;默认为prefix/doc
-–with-pgport=port设置默认的服务器端网络连接服务TCP端口号
-–with-tcl为服务端提供Tcl存储过程支持
-–with-perl 为服务端提供Perl存储过程支持
-–with-python   为服务端提供Python存储过程支持
# make
# 过程略过
# make install
# 过程略过
# ls
binincludelibshare 四、创建用户组postgres并创建用户postgres

# groupadd postgres
# useradd -g postgres postgres
# id postgres
用户id=1002(postgres) 组id=1002(postgres) 组=1002(postgres) 五、创建postgresql数据库的数据主目次并修改文件所有者

这个数据库主目次是随现真相况而不同,这里我们的主目次是在/pgsql/postgresql/data目次下:
# cd /usr/local/pgsql/
# mkdir data
# chown -R postgres:postgres /usr/local/pgsql
# ls -al
# ls -al
总用量 20
drwxr-xr-x   7 postgres postgres   686月 23 00:28 .
drwxr-xr-x. 14 root     root    1646月 23 00:26 ..
drwxr-xr-x   2 postgres postgres 40966月 23 00:26 bin
drwx------19 postgres postgres 40967月6 16:40 data
drwxr-xr-x   6 postgres postgres 40966月 23 00:26 include
drwxr-xr-x   4 postgres postgres 40966月 23 00:26 lib
drwxr-xr-x   6 postgres postgres 40966月 23 00:26 share 六、配置情况变量

进入/home/postgres目次可以看到.bash_profile文件。
# cd /home/postgres
# ls -al
# ll -la
总用量 212
drwx------4 postgres postgres  1657月6 16:39 .
drwxr-xr-x. 5 root     root         506月 23 00:28 ..
-rw-------1 postgres postgres  6857月6 16:54 .bash_history
-rw-r--r--1 postgres postgres     182月 15 23:31 .bash_logout
-rw-r--r--1 postgres postgres  2416月 23 00:32 .bash_profile
-rw-r--r--1 postgres postgres  4922月 15 23:31 .bashrc
drwx------2 postgres postgres    66月 23 00:32 .cache
-rw-------1 postgres postgres 1916496月 23 16:12 logfile
drwxr-xr-x4 postgres postgres     395月 30 07:04 .mozilla
-rw-------1 postgres postgres     847月6 16:46 .psql_history
-rw-------1 postgres postgres   40167月6 16:39 .viminfo

########添加环境变量
# vi .bash_profile
添加以下内容。
export PGHOME=/usr/local/pgsql
export PGDATA=/usr/local/pgsql/data
PATH=$PATH:$HOME/bin:$PGHOME/bin
保存,退出vi。执行以下命令,使环境变量生效
# source .bash_profile 七、切换用户到postgres并使用initdb初使用化数据库

# su - postgres
$ initdb
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "zh_CN.UTF-8".
The default database encoding has accordingly been set to "UTF8".
initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
The default text search configuration will be set to "simple".
#####过程略过
Success. You can now start the database server using:

 pg_ctl -D /usr/local/pgsql/data -l logfile start
# 看到这里可以切换到data目录下看看
##########################################################
$ cd /usr/local/pgsql/data/
$
$
$ pwd
/usr/local/pgsql/data
$
$ ls
base        pg_ident.confpg_serial     pg_tblspc  postgresql.auto.conf
global      pg_logical     pg_snapshotspg_twophasepostgresql.conf
pg_commit_tspg_multixact   pg_stat       PG_VERSION
pg_dynshmem   pg_notify    pg_stat_tmp   pg_wal
pg_hba.conf   pg_replslot  pg_subtrans   pg_xact 八、配置服务

修改/usr/local/pgsql/data/目次下的两个文件
postgresql.conf 配置PostgreSQL数据库服务器的相应的参数。
pg_hba.conf 配置对数据库的访问权限。
$ vi postgresql.conf
## 找到以下内容进行修改即可
##########################################################
listen_addresses = '*'                # what IP address(es) to listen on;
                                     # comma-separated list of addresses;
                                     # defaults to 'localhost'; use '*' for all
                                     # (change requires restart)
#port = 5432                          # (change requires restart)
########说明
其中,参数“listen_addresses”表示监听的IP地址,默认是在localhost处监听,也就是127.0.0.1的ip地址上监听,只接受来自本机localhost的连接请求,这会让远程的主机无法登陆这台数据库,如果想从其他的机器上登陆这台数据库,需要把监听地址改为实际网络的地址,一种简单的方法是,将行开头的#去掉,把这个地址改为*,表示在本地的所有地址上监听。 $ vim pg_hba.conf
## 找到以下内容进行修改即可,加入host  all             all             127.0.0.1/32          trust
#################################################################################

# "local" is for Unix domain socket connections only
local   all             all                                     trust  
# IPv4 local connections:
host  all             all             0.0.0.0/0               trust
host  all             all             127.0.0.1/32          trust###新加的
# IPv6 local connections:
host  all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     trust
host  replication     all             127.0.0.1/32          trust
host  replication     all             ::1/128                 trust 阐明:local和IPv4、IPv6后面的trust是当地登录大概远程登录不验证暗码,如果需要暗码验证的把trust改成md5
九、设置PostgreSQL开机自启动

为PostgreSQL的开机自启动脚本,systemctl 的启动文件,一般存放在/etc/systemd/system 大概/usr/lib/systemd/system/文件夹下
我是在/usr/lib/systemd/system/创建一个postgresql.service,并给赋予实行权限,当然开机自启的方式不知这一种
# cd /usr/lib/systemd/system/
#
# vim postgresql.service
# chmod +x postgresql.service
# 添加以下自动脚本
# 服务名称
Description=postgresql.service
# 在network.target服务之后运行
After=network.target

# 服务的类型,常用的有 simple(默认类型) 和 forking。
Type=forking
#运行程序的用户和群组
User=postgres
Group=postgres
# 工作目录
WorkingDirectory=/usr/local/pgsql
# 启动命令
ExecStart=/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data
# 重启命令
ExecReload=/usr/local/pgsql/bin/pg_ctl restart -D /usr/local/pgsql/data
# 停止命令
ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/bin/data
# 是否给服务分配独立的临时空间,需要
PrivateTmp=true

# 列出依赖当前服务的模块
WantedBy=multi-user.target 切换到有权限的的用户实行以下命令

## 重载systemctl服务
# systemctl daemon-reload
## 启动postgresql服务
# systemctl start postgresql.service
## 查看服务状态
# systemctl status postgresql.service
● postgresql.service
    Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; preset: disabled)
    Active: active (running) since Sat 2024-07-06 16:40:42 CST; 1h 16min ago
 Process: 2394 ExecStart=/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data (code=exited, status=0/SUCCESS)
  Main PID: 2397 (postgres)
   Tasks: 7 (limit: 48581)
    Memory: 26.0M
     CPU: 570ms
    CGroup: /system.slice/postgresql.service
            ├─2397 /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
            ├─2400 "postgres: checkpointer "
            ├─2401 "postgres: background writer "
            ├─2402 "postgres: walwriter "
            ├─2403 "postgres: autovacuum launcher "
            ├─2404 "postgres: stats collector "
            └─2405 "postgres: logical replication launcher "

7月 06 16:40:42 hdp001 pg_ctl: 2024-07-06 16:40:42.244 CST LOG:listening on Unix socket "/tmp/.s.PGSQL.5432"
7月 06 16:40:42 hdp001 pg_ctl: 2024-07-06 16:40:42.249 CST LOG:database system was interrupted; last known up at 2024-06-23 16:15:01 CST
7月 06 16:40:42 hdp001 pg_ctl: 2024-07-06 16:40:42.279 CST LOG:database system was not properly shut down; automatic recovery in progress
7月 06 16:40:42 hdp001 pg_ctl: 2024-07-06 16:40:42.280 CST LOG:redo starts at 0/1A0C440
7月 06 16:40:42 hdp001 pg_ctl: 2024-07-06 16:40:42.281 CST LOG:invalid record length at 0/1A0DB10: wanted 24, got 0
7月 06 16:40:42 hdp001 pg_ctl: 2024-07-06 16:40:42.281 CST LOG:redo done at 0/1A0DAD0 system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed:>
7月 06 16:40:42 hdp001 pg_ctl: 2024-07-06 16:40:42.284 CST LOG:database system is ready to accept connections
7月 06 16:40:42 hdp001 pg_ctl:done
7月 06 16:40:42 hdp001 pg_ctl: server started
7月 06 16:40:42 hdp001 systemd: Started postgresql.service.
#
# 十、开始测试

切换为postgres用户,进入客户端:
# su - postgres
$ psql
psql (14.7)
Type "help" for help.

postgres=#
postgres=# \l
                               List of databases
  Name  |Owner   | Encoding |   Collate   |  Ctype  |   Access privileges  
-----------+----------+----------+-------------+-------------+-----------------------
postgres| postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres        +
          |        |        |             |             | postgres=CTc/postgres
template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres        +
          |        |        |             |             | postgres=CTc/postgres
(3 rows)
# 创建用户并设定密码
postgres=#create user hive with password'Psbc@2025';
CREATE ROLE
# 创建数据库指定属组
postgres=# create database hivemeta_db   owner hive;
CREATE DATABASE
# 授权
postgres=# grant all privileges ondatabase hivemeta_db   to hive ;
GRANT
postgres=#
#显示数据库
postgres=# \l
                                 List of databases
   Name    |Owner   | Encoding |   Collate   |  Ctype  |   Access privileges
----------------+----------+----------+-------------+-------------+-----------------------
hivemeta_db  | hive     | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =Tc/hive             +
             |        |        |             |             | hive=CTc/hive
postgres       | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0    | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres        +
             |        |        |             |             | postgres=CTc/postgres
template1    | postgres | UTF8     | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres        +
             |        |        |             |             | postgres=CTc/postgres
(54rows)
# 退出
postgres=# \q 看到以上内容阐明数据库已经安装完成了
仅作为个人学习记录分享,后期偶然间继续分享postgres、elasticsearch等数据迁移,也好久没有写博客了,重要是项目比较忙,加班多,没有精神了^~^!!!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Linux安装部署PostgreSQL具体步骤