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

news2024/11/17 16:50:40

在这里插入图片描述

博客原文

文章目录

    • 实验环境信息
    • 编译安装
      • 获取安装包
      • 环境依赖
      • 编译安装
        • 安装 contrib 下工具代码
      • 创建用户
      • 创建数据目录
      • 设置开机自启动
      • 启动数据库
      • 常用运维操作
    • apt 安装
      • 更新源
      • 安装 postgresql
      • 开机自启
      • 修改配置
      • 修改密码

实验环境信息

  • 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

环境依赖

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

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

环境依赖报错:

  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
安装 contrib 下工具代码
$ cd contrib
$ make && make install

创建用户

$ groupadd postgres
$ useradd -g postgres postgres -d /home/postgres
$ id postgres
uid=1001(postgres) gid=1001(postgres) groups=1001(postgres)
# 设置密码
$ passwd postgres
# 输入密码

创建数据目录

只要暴露 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

设置开机自启动

$ 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. 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
       
       <<<<<<<<<<<<<<<<
       
      
    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. 修改监听所有网络以及数据库连接数

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

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

2. 远程访问

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

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

4. 防火墙

# 切换root用户
$ su - root

# 防火墙 允许5432 端口
$ ufw allow 5432

5. 修改密码

# 切换用户
$ su - postgres

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

# 修改密码
postgres=# alter user postgres with password '123456';
ALTER ROLE

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

安装 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

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

修改配置

# 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

修改密码

# 切换用户
$ su - postgres

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

# 修改密码
postgres=# alter user postgres with password '123456';
ALTER ROLE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1443528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux中常用的工具

软件安装 yum 软件包 在Linux中&#xff0c;软件包是一种预编译的程序集合&#xff0c;通常包含了用户需要的应用程序、库、文档和其他依赖项。 软件包管理工具是用于安装、更新和删除这些软件包的软件。常见的Linux软件包管理工具包括APT&#xff08;Advanced Packaging To…

【c++入门】母牛生小牛

说明 有一头小母牛&#xff0c;从出生第四年起每年生一头小母牛&#xff0c;按此规律&#xff0c;第N年时有几头母牛&#xff1f; 输入数据 只有一个整数N&#xff0c;独占一行。(1≤N≤50) 输出数据 对每组数据&#xff0c;输出一个整数&#xff08;独占一行&#xff09;…

python+django高校教务选课成绩系统v0143

系统主要实现了以下功能模块&#xff1a; 本课题使用Python语言进行开发。基于web,代码层面的操作主要在PyCharm中进行&#xff0c;将系统所使用到的表以及数据存储到MySQL数据库中 使用说明 使用Navicat或者其它工具&#xff0c;在mysql中创建对应名称的数据库&#xff0c;并…

如何从格式化的 U盘恢复不见的数据

格式化与使用任何容量有限的存储设备&#xff08;例如 USB 闪存驱动器&#xff09;密切相关。在大多数情况下&#xff0c;一次性删除所有内容比逐个删除文件更快、更方便。但是&#xff0c;如果您犯了错误并意外格式化了错误的驱动器怎么办&#xff1f;是否可以从格式化的闪存驱…

linux进程(进程地址空间)

目录 前言&#xff1a; 正文&#xff1a; 1.验证地址空间 2.地址空间是指物理空间吗 3.linux内核的地址空间 4进程访问地址 4.1早期程序寻址 4.2进程地址空间到物理内存的映射 4.3解释同一变量产生不同值 5虚拟地址空间的意义 5.1保护物理内存 5.2进程管理和内…

DolphinScheduler-3.2.0 集群搭建

本篇文章主要记录DolphinScheduler-3.2.0 集群部署流程。 注&#xff1a;参考文档&#xff1a; DolphinScheduler-3.2.0生产集群高可用搭建_dophinscheduler3.2.0 使用说明-CSDN博客文章浏览阅读1.1k次&#xff0c;点赞25次&#xff0c;收藏23次。DolphinScheduler-3.2.0生产…

VitePress-13- 配置-title的作用详解

作用描述 1、title 是当前站点的标题&#xff1b;2、默认值是 &#xff1a;VitePress&#xff1b;3、当使用默认主题时&#xff0c;会直接展示在 页面的【导航条】中&#xff1b;4、一个特殊的作用 &#xff1a; 会作为单个页面的默认标题后缀&#xff01;除非又指定了【title…

[韩顺平]python笔记

AI工程师、运维工程师 python排名逐年上升&#xff0c;为什么&#xff1f; python对大数据分析、人工智能中关键的机器学习、深度学习都提供有力的支持Python支持最庞大的 代码库 &#xff0c;功能超强 数据分析&#xff1a;numpy/pandas/os 机器学习&#xff1a;tensorflow/…

【算法与数据结构】42、LeetCode接雨水

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;   程序如下&#xff1a; 复杂度分析&#xff1a; 时间复杂度&#xff1a; O ( ) O() O()。空间复…

hook函数——useRef

useRef useRef 是一个 React Hook&#xff0c;它能帮助引用一个不需要渲染的值。也就是说useRef可以存储一个值&#xff0c;但是不被组件渲染&#xff0c;仅仅只是引用&#xff0c;主要包括两个方面&#xff0c;例如使用ref引用一个值&#xff0c;使用ref引用一个dom节点&…

「C++ 类和对象篇 10」初始化列表

目录 一、什么是初始化列表&#xff1f; 二、为什么需要初始化列表&#xff1f; 三、初始化列表怎么使用&#xff1f; 3.1 在构造函数中使用初始化列表 3.2 注意 3.3 结论 3.4 应用场景 四、初始化列表的初始化顺序 五、另一种初始化成员变量的方法 【总结】 一、什么是初始化…

openresty (nginx)快速开始

文章目录 一、什么是openresty&#xff1f;二、openresty编译安装1. 编译安装命令1.1 编译完成后路径1.2 常用编译选项解释 2. nginx配置文件配置2.1 nginx.conf模板 3. nginx常见配置一个站点配置多个域名nginx配置中location匹配规则 三、OpenResty工作原理OpenResty工作原理…

[经验] 喉咙沙哑的原因及应对方法是什么 #学习方法#其他#媒体

喉咙沙哑的原因及应对方法是什么 生活中&#xff0c;喉咙不舒服是很常见的情况&#xff0c;尤其是喉咙沙哑&#xff0c;让人感到特别难受&#xff0c;影响睡眠和生活质量。那么喉咙沙哑怎么办呢&#xff1f;接下来我会分享一些简单易行的方法&#xff0c;帮助你缓解这种不适感…

kali最新最简单安装

之前都是用iso镜像文件的 今年好多东西都删库了&#xff0c;所有还是要主要资源的保存 去官网找下载 一般来说都是用虚拟机的 下载完会是一个压缩文件&#xff0c; 解压&#xff0c;然后操作之前需要先下载虚拟机 打开方式用虚拟机打开 kali就按装好了

最简单的基于 FFmpeg 的音频编码器(PCM 编码为 AAC)

最简单的基于 FFmpeg 的音频编码器&#xff08;PCM 编码为 AAC&#xff09; 最简单的基于 FFmpeg 的音频编码器&#xff08;PCM 编码为 AAC&#xff09;正文结果工程文件下载其他参考链接 最简单的基于 FFmpeg 的音频编码器&#xff08;PCM 编码为 AAC&#xff09; 参考雷霄骅…

网络原理(一)

&#x1f495;"Echo"&#x1f495; 作者&#xff1a;Mylvzi 文章主要内容&#xff1a;网络原理(一) 一. 应用层 应用层是和程序员联系最密切的一层,对于应用层来说,程序员可以自定义应用层协议,应用层的协议一般要约定好以下两部分内容: 根据需求,明确要传输哪些信…

使用REQUESTDISPATCHER对象调用错误页面

使用REQUESTDISPATCHER对象调用错误页面 问题陈述 InfoSuper公司已经创建了一个动态网站。发生错误时,浏览器中显示的堆栈跟踪很难理解。公司的系统分析师David Wong让公司的软件程序员Don Allen创建自定义错误页面。servlet引发异常时,应使用RequestDisapatcher对象向自定义…

[VulnHub靶机渗透] Misdirection: 1

&#x1f36c; 博主介绍&#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 hacker-routing &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 &#x1f389;点赞➕评论➕收藏…

jmeter-问题二:JMeter进行文件上传时,常用的几种MIME类型

以下是一些常用的MIME类型及其对应的文件扩展名&#xff1a; 文本类型: text/plain: 通常用于纯文本文件&#xff0c;如 .txt 文件。 text/html: 用于HTML文档&#xff0c;即 .html 文件。 application/msword: Microsoft Word文档&#xff0c;即 .doc 和 .docx 文件。 图像…

在Ubuntu22.04上部署ComfyUI

ComfyUI 是 一个基于节点流程的 Stable Diffusion 操作界面&#xff0c;可以通过流程&#xff0c;实现了更加精准的工作流定制和完善的可复现性。每一个模块都有特定的的功能&#xff0c;我们可以通过调整模块连接达到不同的出图效果&#xff0c;特点如下&#xff1a; 1.对显存…