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

博客原文
文章目录
- 实验环境信息
- 编译安装
- 获取安装包
- 环境依赖
- 编译安装
- 安装 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
环境依赖报错:
configure: error: no acceptable C compiler found in $PATH- 说明: 没有 C 语言编译器,
apt install -y gcc
- 说明: 没有 C 语言编译器,
configure: error: ICU library not found- 直接跳过使用
./configure --prefix=/usr/local/postgresql --without-icu
- 直接跳过使用
configure: error: readline library not found- 有网络:
apt-get install -y libreadline-gplv2-dev - 无网络:下载软件包使用dpkg命令安装 ,可在网站pkgs.org上下载
- libtinfo-dev_6.0+20160213-1ubuntu1_amd64.deb
- libreadline-gplv2-dev_5.2+dfsg-3build1_amd64.deb
- 有网络:
configure: error: zlib library not found- 有网络:
apt-get install zlib1g-dev - 无网络:下载软件包
- 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
-
systemctl 服务开机自启失败:
update-rc.d: error: postgresql Default-Start contains no runlevels, aborting.-
$ 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<<<<<<<<<<<<<<<< -
如图:

-
启动数据库
# 初始化数据库
$ 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 RDBMSLoaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)Active: active (exited) since Sat 2024-01-27 10:40:44 UTC; 51s agoMain PID: 6952 (code=exited, status=0/SUCCESS)Tasks: 0 (limit: 4557)Memory: 0BCGroup: /system.slice/postgresql.serviceJan 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
相关文章:
Postgresql 的编译安装与包管理安装, 全发行版 Linux 通用
博客原文 文章目录 实验环境信息编译安装获取安装包环境依赖编译安装安装 contrib 下工具代码 创建用户创建数据目录设置开机自启动启动数据库常用运维操作 apt 安装更新源安装 postgresql开机自启修改配置修改密码 实验环境信息 Ubuntu 20.04Postgre 16.1 编译安装 获取安装…...
【Java EE初阶十】多线程进阶二(CAS等)
1. 关于CAS CAS: 全称Compare and swap,字面意思:”比较并交换“,且比较交换的是寄存器和内存; 一个 CAS 涉及到以下操作: 下面通过语法来进一步进项说明: 下面有一个内存M,和两个寄存器A,B; CAS(M,A,B)&am…...
与AI对话:编写高效Prompt的指南
与AI对话:编写高效Prompt的指南 一、明确目标 引导AI提供特定格式或内容答案的策略一、明确需求二、使用示例三、设置参数四、分步询问五、使用关键词 利用关键词引导AI重点关注核心内容的技巧一、确定关键概念二、使用专业术语三、强调重要性四、避免相关术语的混淆…...
QML用ListView实现带section的GridView
QML自带的GridView只能定义delegate,没有section,类似手机相册带时间分组标签的样式就没法做。最简单的方式就是组合ListViewGridView,或者ListViewFlow,但是嵌套View时,子级View一般是完全展开的,只显示该…...
docker之程序镜像的制作
目录 一、每种资源的预安装(基础) 安装 nginx安装 redis 二、dockerfile文件制作(基础) 打包 redis 镜像 创建镜像制作空间制作dockerfile 打包 nginx 镜像 三、创建组合镜像(方式一) 生成centos容器并…...
Git - 每次 git pull/push 时需要账号和密码解决方案
问题描述 在提交项目代码或者拉取代码的时候,每次 git 都要输入用户名密码,很烦~ 解决方案 让服务器记下来用户名和密码,此时输入一次,以后再 git push /pull 的时候就不用再输账号和密码了 # 配置 git 记录用户名和密码 git c…...
C语言中在main函数之后运行的函数
在 Linux 平台上,atexit 函数同样是一个用于注册终止处理函数的库函数,它是 C 标准库 <stdlib.h> 的一部分。atexit 函数允许你注册一个或多个函数,这些函数会在 main 函数执行结束后,或者在调用 exit 函数时,由…...
pytorch训练指标记录之tensoboard,wandb
详解Tensorboard及使用教程_tensorboard怎么用-CSDN博客文章浏览阅读5.1w次,点赞109次,收藏456次。目录一、什么是Tensorboard二、配置Tensorboard环境要求安装三、Tensorboard的使用使用各种add方法记录数据单条曲线(scalar)多条曲线(scalars)直方图(hi…...
C语言——oj刷题——实现字符串逆序
当我们需要逆序一个字符串的内容时,可以通过C语言编写一个函数来实现。下面将详细介绍如何通过C语言实现这个功能,并附上代码示例。 1、实现原理 要逆序一个字符串的内容,可以使用两个指针来交换字符串中对应位置的字符。具体实现原理如下&am…...
空气质量预测 | Matlab实现基于SVR支持向量机回归的空气质量预测模型
文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 政府机构使用空气质量指数 (AQI) 向公众传达当前空气污染程度或预测空气污染程度。 随着 AQI 的上升,公共卫生风险也会增加。 不同国家有自己的空气质量指数,对应不同国家的空气质量标准。 基于支持向量机(Su…...
Vue中的请求拦截器
目录 1 前言 2 使用方法 2.1 创建拦截器 2.2 引入拦截器 1 前言 我们常常会使用JWT令牌来验证登录,因此很多请求都需要携带JWT令牌,我们当然可以用{headers:{Authorization:xx}}的方式,向每个请求中都以这样的方式添加JWT令牌。不过这样…...
Java奠基】对象数组练习
目录 商品对象信息获取 商品对象信息输入 商品对象信息计算 商品对象信息统计 学生数据管理实现 商品对象信息获取 题目要求是这样的: 定义数组存储3个商品对象。 商品的属性:商品的id,名字,价格,库存。 创建三个…...
排序算法---快速排序
原创不易,转载请注明出处。欢迎点赞收藏~ 快速排序是一种常用的排序算法,采用分治的策略来进行排序。它的基本思想是选取一个元素作为基准(通常是数组中的第一个元素),然后将数组分割成两部分,其中一部分的…...
算法||实现典型数据结构的查找、添加和删除数据 并分析其时间和空间复杂度
实现典型数据结构的查找、添加和删除数据 并分析其时间和空间复杂度 线性结构: 数组:是一种线性表数据结构,它用一组连续的内存空间,来存储一组具有相同类型的数据。 查找数据 :随机访问 流程图 /** 查询元素下标…...
【蓝桥杯冲冲冲】Invasion of the Milkweed G
【蓝桥杯冲冲冲】Invasion of the Milkweed G 蓝桥杯备赛 | 洛谷做题打卡day30 文章目录 蓝桥杯备赛 | 洛谷做题打卡day30[USACO09OCT] Invasion of the Milkweed G题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 题解代码我的一些话 [USACO09OCT] Invasion of the Mi…...
【JAVA WEB】 百度热榜实现 新闻页面 Chrome 调试工具
目录 百度热榜 新闻页面 Chrome 调试工具 --查看css属性 打开调试工具的方式 标签页含义 百度热榜 实现效果: 实现代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"vi…...
Linux——动静态库
基础知识:动vs静 类型动静加载时机运行时编译时可复用性多个文件只需要加载一份库文件每个文件都需要加载一份文件性能链接次数越多越有优势链接次数越少越有优势 代码编写 静态库 生成静态库 libmath.a:add.o sub.oar -rc $ $^%.o:%.cgcc -c $<使用静态库 头文件和工…...
Vulnhub靶机:hacksudo-search
一、介绍 运行环境:Virtualbox 攻击机:kali(10.0.2.15) 靶机:hacksudo-search(10.0.2.50) 目标:获取靶机root权限和flag 靶机下载地址:https://download.vulnhub.co…...
Leetcode 188 买卖股票的最佳时机 IV
题意理解: 给你一个整数数组 prices 和一个整数 k ,其中 prices[i] 是某支给定的股票在第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。也就是说,你最多可以买 k 次,卖 k 次。 注意…...
win32编程系统BUG(Win32 API中的WM_SETTEXT消息)
由于频繁使用Win32 API中的WM_SETTEXT消息,导致内存占用直线上升。 暂未找到有效解决方案。...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
