当前位置:   article > 正文

Postgresql 的编译安装与包管理安装, 全发行版 Linux 通用_linux 安装pgsql

linux 安装pgsql

在这里插入图片描述

博客原文

实验环境信息

  • Ubuntu 20.04
  • Postgre 16.1

编译安装

获取安装包

PostgreSQL官网下载PostgreSQL的安装包

$ VERSION=16.1
$ wget https://ftp.postgresql.org/pub/source/v$VERSION/postgresql-$VERSION.tar.gz
$ tar zxvf postgresql-$VERSION.tar.gz
$ cd postgresql-$VERSION
  • 1
  • 2
  • 3
  • 4

环境依赖

# 创建postgreSQL的安装目录
$ mkdir /usr/local/postgresql

# 检查环境配置--prefix是指定postgreSQL安装路径
$ ./configure --prefix=/usr/local/postgresql
  • 1
  • 2
  • 3
  • 4
  • 5

环境依赖报错:

  1. configure: error: no acceptable C compiler found in $PATH
    1. 说明: 没有 C 语言编译器, apt install -y gcc
  2. configure: error: ICU library not found
    1. 直接跳过使用 ./configure --prefix=/usr/local/postgresql --without-icu
  3. configure: error: readline library not found
    1. 有网络:apt-get install -y libreadline-gplv2-dev
    2. 无网络:下载软件包使用dpkg命令安装 ,可在网站pkgs.org上下载
      • libtinfo-dev_6.0+20160213-1ubuntu1_amd64.deb
      • libreadline-gplv2-dev_5.2+dfsg-3build1_amd64.deb
  4. configure: error: zlib library not found
    1. 有网络:apt-get install zlib1g-dev
    2. 无网络:下载软件包
      • zlib1g-dev_1.2.8.dfsg-2ubuntu4_amd64.deb

编译安装

$ make && make install
  • 1
安装 contrib 下工具代码
$ cd contrib
$ make && make install
  • 1
  • 2

创建用户

$ groupadd postgres
$ useradd -g postgres postgres -d /home/postgres
$ id postgres
uid=1001(postgres) gid=1001(postgres) groups=1001(postgres)
# 设置密码
$ passwd postgres
# 输入密码
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

创建数据目录

只要暴露 PGDATA 即可

$ mkdir -p /var/postgresql/data
$ chown -R postgres:postgres /usr/local/postgresql
$ chown -R postgres:postgres /var/postgresql

$ chmod -R 775 /var/postgresql/*

$ vi /etc/profile   # 添加以下行, 不要使用 cat << EOF
export PGHOME=/usr/local/postgresql
export PGDATA=/var/postgresql/data
export PATH=$PATH:$PGHOME/bin

$ source /etc/profile
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

设置开机自启动

$ cd ~/postgresql-16.1/contrib/start-scripts

$ vi linux
修改 prefix 为安装目录 /usr/local/postgresql
修改 PGDATA 为数据目录 /var/postgresql/data
注意, PGUSER 为运行 postgre 的用户

$ chmod a+x linux
$ cp linux /etc/init.d/postgresql

# 设置postgresql服务开启自启动
$ systemctl enable postgresql
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  1. systemctl 服务开机自启失败: update-rc.d: error: postgresql Default-Start contains no runlevels, aborting.

    1.  $ vi /etc/init.d/postgresql
       
       在 #!/bin/sh 头部下添加一下注释
       >>>>>>>>>>>>>>>
       
       ### BEGIN INIT INFO
       # Provides:          XXX
       # Required-Start:
       # Required-Stop:
       # Default-Start:     2 3 4 5
       # Default-Stop:      0 1 6
       # Short-Description: Start XXX daemon at boot time
       # Description:       Start XXX daemon at boot time
       ### END INIT INFO
       
       <<<<<<<<<<<<<<<<
       
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
    2. 如图:在这里插入图片描述

启动数据库

# 初始化数据库
$ initdb -D /var/postgresql/data

# 启动服务
$ pg_ctl -D /var/postgresql/data -l /var/postgresql/logs/logfile start

#连接数据库
$ psql 

# 创建数据库 
postgres=# create database test; 

# 创建表
postgres=# create table t_user (id integer, name text); 

# 插入测试数据
postgres=# insert into t_user values (1,'joke');

# 查询数据
postgres=# select * from t_user ;

#退出psql窗口
postgres=# \q
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

常用运维操作

1. 修改监听所有网络以及数据库连接数

# 修改配置文件
$ vim /var/postgresql/data/postgresql.conf

# listen_addresses = 'localhost' 监听本机,'*'监听所有网络
listen_addresses = '*' 
# max_connections 数据库的连接数根据具体需求更改 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

2. 远程访问

$ vim /var/postgresql/data/pg_hba.conf 
#在文件的最下方加上下面的这句话,最后一个 trust 表示所有用户不需要密码,需要密码要设置为 md5
host    all         all         0.0.0.0/0             md5
  • 1
  • 2
  • 3

3. 基础运维命令

# 切换postgres用户
$ su - postgres

# 重启服务
$ pg_ctl -D /var/postgresql/data -l /var/postgresql/logs/logfile restart

# 停止服务
$ pg_ctl -D /var/postgresql/data -l /var/postgresql/logs/logfile stop
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4. 防火墙

# 切换root用户
$ su - root

# 防火墙 允许5432 端口
$ ufw allow 5432
  • 1
  • 2
  • 3
  • 4
  • 5

5. 修改密码

# 切换用户
$ su - postgres

# 客户端登录
$ psql
# psql -U postgres -h 127.0.0.1 -p 5432

# 修改密码
postgres=# alter user postgres with password '123456';
ALTER ROLE
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

apt 安装

更新源

$ echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list

# 添加秘钥
$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -

$ apt update
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

安装 postgresql

# 查看版本
$ apt-cache madison postgresql   # 服务端
$ apt-cache madison postgresql-contrib   # 服务端工具包
$ apt-cache madison postgresql-client   # 客户端


# 安装 postgresql
$ apt install -y postgresql-16 postgresql-contrib postgresql-client
# apt install -y postgresql
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

apt 安装会默认创建一个 postgres 用户

开机自启

$ systemctl status postgresql
● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2024-01-27 10:40:44 UTC; 51s ago
   Main PID: 6952 (code=exited, status=0/SUCCESS)
      Tasks: 0 (limit: 4557)
     Memory: 0B
     CGroup: /system.slice/postgresql.service

Jan 27 10:40:44 ubuntu systemd[1]: Starting PostgreSQL RDBMS...
Jan 27 10:40:44 ubuntu systemd[1]: Finished PostgreSQL RDBMS.

# 开机自启
$ systemctl enable --now postgresql
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

修改配置

# ps -ef 获取 postgre 的配置文件位置
$ ps -ef|grep postgre

# 修改监听地址
$ sed -i "s@#listen_addresses = 'localhost'@listen_addresses = '*'@g" /etc/postgresql/16/main/postgresql.conf

# 我们可以从配置文件知道 hba_file 的位置
# 修改 hba_file 添加支持 md5 密码登录
$ echo "host    all             all             192.168.154.0/24            md5" >> /etc/postgresql/16/main/pg_hba.conf

$ systemctl restart postgresql
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

修改密码

# 切换用户
$ su - postgres

# 客户端登录
$ psql
# psql -U postgres -h 127.0.0.1 -p 5432

# 修改密码
postgres=# alter user postgres with password '123456';
ALTER ROLE
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/905127
推荐阅读
相关标签
  

闽ICP备14008679号