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消息,导致内存占用直线上升。 暂未找到有效解决方案。...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
基于大模型的 UI 自动化系统
基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
