当前位置: 首页 > news >正文

PostgreSQL安装教程

系统环境

下载压缩包

下载压缩包

解压压缩包

查看解压文件

编译安装

编译

安装

用户权限和环境变量设置

创建用户

创建数据目录和日志目录

设置权限

设置环境变量

初始化数据库

数据库访问控制配置文件

postgresql.conf

pg_hba.conf

PostgreSQL启动与关闭

手动

自动

客户端测试连接

设置用户postgres密码

DBeaver连接测试


系统环境

1.操作系统:CentOS 7.6.1810

2.PostgreSQL版本: 16.0

下载压缩包

官网地址:PostgreSQL: File Browser

下载压缩包

wget https://ftp.postgresql.org/pub/source/v16.0/postgresql-16.0.tar.gz

解压压缩包

tar -xzvf  postgresql-16.0.tar.gz

查看解压文件

解压之后会看到下面的文件

编译安装

编译

进入postgresql-16.0目录,编译configure文件

./configure --prefix=/usr/local/pgsql

参数:--prefix=/usr/local/pgsql
表示编译好的文件放到目录"/usr/local/pgsql"里,这个目录不用用户自己创建,编译过程会自动创建。

注意事项:

PostgreSQL编译过程会用到一些依赖的库,如果你的操作系统比较旧,编译过程可能会出现错误,告诉你要安装缺少的依赖库。

看到./config.status说明编译完成,可以看见config.status文件

安装

make && make install 

完成以后,在"--prefix=/usr/local/pgsql"参数对应的"/usr/local/pgsql"的目录就是我们所有PostgreSQL存放的文件,这里的这个data和log文件现在是没有的。

用户权限和环境变量设置

编译安装成功后,接下来要做的就是创建一个普通用户,因为默认Linux超级用户(root)不能启动PostgreSQL,所以需要创建一个普通用户来操作数据库。

创建用户

#创建用户组postgres
groupadd postgres
#创建用户postgres并设置groups、gid和家目录
useradd -g postgres -G postgres -d /home/postgresql postgres 
#设置用户密码
passwd postgres

创建数据目录和日志目录

注意当前路径是在/usr/local/pgsql下

mkdir data log

设置权限

接下来需要设置权限,将/usr/local/pgsql (我们安装PostgreSQL数据库的目录) 目录全部赋权给postgres用户

chown -R postgres.postgres /usr/local/pgsql/

设置环境变量

为了方便起见设置一下相关的环境变量,此处是要设置postgres用户的环境变量,所以首先要把Linux的登陆用户由root切换到以postgres用户登陆。

su - postgres

因为我们创建Linux用户"postgres"是指定了用户的目为"/home/postgresql",所以登陆后显示的目录是:/home/postgresql

要创建环境变量,实际上就是对文件.bash_profile的修改,所以我们首先要找到这个文件,这个文件就在"/home/postgresql"里,由于这个文件是隐藏文件所以要加-a参数

ll -a 

编辑.bash_profile文件

vim .bash_profile

添加下面的内容

使配置的环境变量生效

source /home/postgresql/.bash_profile

检查是否生效

psql -V

看到安装PostgreSQL的版本号则代表生效

初始化数据库

新安装的PostgreSQL数据库系统,要先初始化基本的基础数据库,然后我们才能在上面创建我们自己的数据库。初始化数据库的指令是"initdb",这个指令位于"/usr/local/pgsql/bin/"

我们可以用指令"initdb --help"看看这个文件的帮助信息。

如上图,可以看到在使用"initdb"进行初始化的时,可以指定参数进行一些初始化工作,例如指定pgdata(postgresql数据库目录)、指定encoding(编码)、指定数据库超级用户的用户名和密码等等。注意,如果pgdata目录没有指定,则会默认使用环境变量中的PGDATA指定的目录作为数据库存放的目录,由于之前我们刚刚设置了"PGDATA=/usr/local/pgsql/data"环境变量,所以此处我们也就无需再额外指定,直接执行初始化命令即可。

initdb

若是执行initdb看到下面报错,说明现在登陆的不是postgres用户,需要切换到postgres用户来执行initdb命令

看到下面信息就代表成功

同时在"/usr/local/pgsql/data]"的目录可以看到生成的数据和配置文件等。

  1. base目录是表空间目录
  2. global目录是相关全局变量的目录
  3. pg_hba.conf是访问控制配置,127.0.0.1改为信任的客户端ip网段使其可以远程访问
  4. postgresql.conf是PostgreSQL主配置文件,"listen_address=localhost"改为"*"使其监听整个网络,方便起见我这里将pg_hba.conf的ip地址修改为0.0.0.0/0,而加密方式改为md5,就表示需要密码访问,算是提供一个最低级的安全防护

数据库访问控制配置文件

主要是配置postgresql.conf 和 pg_hba.conf 个。

  1. postgresql.conf 针对实例的配置
  2. pg_hba.conf 针对数据库访问的控制

postgresql.conf

vim postgresql.conf 

找到"#port"和"#listener_address"这两个参数,这两个参数是相邻的,将两行行首的"#"删除。
将"listen_addressee='localhost'"改为当前服务器的IP,如果改为

"listen_addressee='*'",将监听整个网络。
默认的监听端口是5432,可以自行指定另外一个端口号。
max_connections是客户端最大的连接数, 缺省值100有点少,特别是业务系统,可以调整成1000或者更高。

pg_hba.conf

vim pg_hba.conf

将红框设置为 10.10.100.0/24,意思是10.10.100网段的IP 连接此服务器上的PostgreSQL. 如果想允许所有IP都可以连接此服务器,则可以配置成0.0.0.0/0,但这样是不安全的,可以把trust改为md5,表示需要密码访问,算是提供一个最低级的安全防护。

PostgreSQL启动与关闭

手动

启动与关闭数据库是执行pg_ctl命令,在执行时,需要指定数据库路径和日志文件路径,格式如下。

pg_ctl -D <数据存放路径> -l <日志文件路径> [ stop | start ]

如果已经指定了环境变量PGDATA,"数据存放路径"参数可以省略。

pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/log/pg_server.log start

自动

此步骤需要root用户操作,如果你是用PostgreSQL的用户postgres登陆的话,要用exit指令退出,回到root登陆才能操作。
PostgreSQL解压后的安装包目录中提供了数据库启动与关闭的脚本,此脚本不但可以帮助我们简化操作,而且可以用作开机启动的脚本和service/systemctl 控制服务的脚本。目录里"linux"文件就是我们要找的文件。

如果找不到linux文件可以执行下面命令查看

find / -name macos

把文件"linux"拷贝到目录"etc/init.d/"下,并改名为postgresql。
把脚本文件"postgresql"加入到开机启动的程序列表。
赋予"postgresql"文件有执行的权限。

cp /opt/postgresql/postgresql-16.0/contrib/start-scripts/linux /etc/init.d/postgresql
chkconfig --add postgresql或者systemctl enable postgresql
chmod 755 /etc/init.d/postgresql

主要设置文件"postgresql"的四个变量的值。

vim /etc/init.d/postgresql

prefix 是软件的安装路径
PGDATA 是数据存放路径
PGUSER 是启动PostgreSQL服务器的用户
PGLOG 是日志文件

以后可以开机启动和通过service命令控制启动和关闭了。

service postgresql start/stop

客户端测试连接

可以通过PostgreSQL自带的客户端工具程序psql来进行连接,这个psql指令文件位于/usr/local/pgsql/bin目录下,因为我们做了变量环境设置,所以可以在任何目录下直接输入psql连接PostgreSQL服务器。温馨提示:用客户端程序psql连接数据库前,要把当前Linux登陆用户从root切换到postgres用户,这个是我们创建的PostgreSQL的超级用户。

su - postgres
psql

可以看到,已经连接上了数据库服务器。

设置用户postgres密码

postgres=# \password

命令"\l"是显示数据库。更多的SQL操作命令可以参考PostgreSQL的官方文档。退出pgsql客户端命令是"\q"或者exit

DBeaver连接测试

测试连接成功

PostgreSQL安装到此完毕。

相关文章:

PostgreSQL安装教程

系统环境 下载压缩包 下载压缩包 解压压缩包 查看解压文件 编译安装 编译 安装 用户权限和环境变量设置 创建用户 创建数据目录和日志目录 设置权限 设置环境变量 初始化数据库 数据库访问控制配置文件 postgresql.conf pg_hba.conf PostgreSQL启动与关闭 手…...

SLAM基础知识:前端和后端

在SLAM中前端和后端是被经常提到的一个概念。但是对于前端和后端的理解有着不同的看法&#xff0c;我的理解是&#xff1a; 前端&#xff1a;前端负责处理传感器数据&#xff0c;特征提取&#xff0c;进行状态估计和地图构建的初步步骤。 后端&#xff1a;后端接受不同时刻的里…...

一文彻底搞懂从输入URL到显示页面的全过程

简略版&#xff1a; 用户输入URL后&#xff0c;浏览器经过URL解析、DNS解析、建立TCP连接、发起HTTP请求、服务器处理请求、接收响应并渲染页面、关闭TCP连接等步骤&#xff0c;最终将页面显示给用户。 详细版&#xff1a; URL解析&#xff1a;浏览器根据用户输入的URL&#x…...

好书安利:《大模型应用开发极简入门:基于GPT-4和ChatGPT》这本书太好了!150页就能让你上手大模型应用开发

文章目录 前言一、ChatGPT 出现&#xff0c;一切都变得不一样了二、蛇尾书特色三、蛇尾书思维导图四、作译者简介五、业内专家书评总结 前言 ​如果问个问题&#xff1a;有哪些产品曾经创造了伟大的奇迹&#xff1f;ChatGPT 应该会当之无愧入选。仅仅发布 5 天&#xff0c;Chat…...

力扣题库第4题:移动零

题目内容&#xff1a; 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 : 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 答案&…...

Java解决IP地址无效化

Java解决IP地址无效化 01 题目 给你一个有效的 IPv4 地址 address&#xff0c;返回这个 IP 地址的无效化版本。 所谓无效化 IP 地址&#xff0c;其实就是用 "[.]" 代替了每个 "."。 示例 1&#xff1a; 输入&#xff1a;address "1.1.1.1" 输出…...

[数据结构初阶]队列

鼠鼠我呀&#xff0c;今天写一个基于C语言关于队列的博客&#xff0c;如果有兴趣的读者老爷可以抽空看看&#xff0c;很希望的到各位老爷观点和点评捏&#xff01; 在此今日&#xff0c;也祝各位小姐姐女生节快乐啊&#xff0c;愿笑容依旧灿烂如初阳&#xff0c;勇气与童真永不…...

MySQL学习Day27——MySQL事务日志

事务的隔离性由锁机制实现,而事务的原子性、一致性和持久性由事务的redo日志和undo日志来保证。其中REDO LOG称为重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性,redo log是存储引擎层生成的日志,记录的是物理级别上的页修改操作,主要为了保证…...

ETAS工具链ISOLAR-AB重要概念,RTE配置,ECU抽取

RTE配置界面&#xff0c;包含ECU抽取关联 首次配置RTE&#xff0c;出现需要勾选的抽取EXTRACT 创建System System制作SWC到ECU的Mapping System制作System Data 的Mapping...

蓝桥杯倒计时 43天 - 前缀和

思路&#xff1a;如果用n^2复杂度暴力会超时。nlogn 可以&#xff0c;利用前缀和化简&#xff0c;提前存储某个位置前的每个石头搬运到该位置和每个石头后搬运到该位置的前缀和On最后直接输出 On。排序花 nlogn #include<bits/stdc.h> using namespace std; typedef pai…...

【Web - 框架 - Vue】随笔 - Vue的简单使用(01) - 快速上手

【Web - 框架 - Vue】随笔 - Vue的简单使用(01) - 快速上手 Vue模板代码 代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>模板</title> </head> <body> <div></di…...

【简说八股】Redisson的守护线程是怎么实现的

Redisson Redisson 是一个 Java 语言实现的 Redis SDK 客户端&#xff0c;在使用分布式锁时&#xff0c;它就采用了「自动续期」的方案来避免锁过期&#xff0c;这个守护线程我们一般也把它叫做「看门狗」线程。 Redission是一个在Java环境中使用的开源的分布式缓存和分布式锁实…...

WPS/Office 好用的Word插件-查找替换

例如&#xff1a;一片文档&#xff1a;…………泰山…………泰&#xff08;少打了山字&#xff09;………… 要是把“泰”查找替换为“泰山”&#xff0c;就会把前面的“泰山”变成“泰山山”&#xff0c;这种问题除了再把“泰山山”查找替换为“泰山”&#xff0c;有没有更简单…...

Go 简单设计和实现可扩展、高性能的泛型本地缓存

相信大家对于缓存这个词都不陌生&#xff0c;但凡追求高性能的业务场景&#xff0c;一般都会使用缓存&#xff0c;它可以提高数据的检索速度&#xff0c;减少数据库的压力。缓存大体分为两类&#xff1a;本地缓存和分布式缓存&#xff08;如 Redis&#xff09;。本地缓存适用于…...

Vue.js 深度解析:模板编译原理与过程

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…...

Java多线程——如何保证原子性

目录 引出原子性保障原子性CAS 创建线程有几种方式&#xff1f;方式1&#xff1a;继承Thread创建线程方式2&#xff1a;通过Runnable方式3&#xff1a;通过Callable创建线程方式4&#xff1a;通过线程池概述ThreadPoolExecutor API代码实现源码分析工作原理&#xff1a;线程池的…...

stm32消息和邮箱使用

邮箱管里介绍 邮箱是C/OS-II中另一种通讯机制,它可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量。该指针指向一个包含了特定“消息”的数据结构。为了在C/OS-II中使用邮箱,必须将OS_CFG.H中的OS_MBOX_EN常数置为1。使用邮箱之前,必须先建立该邮箱。该操…...

银行数字化转型导师坚鹏:银行数字化转型案例研究

银行数字化转型案例研究 课程背景&#xff1a; 数字化背景下&#xff0c;很多银行存在以下问题&#xff1a; 不清楚银行科技金融数智化案例&#xff1f; 不清楚银行供应链金融数智化案例&#xff1f; 不清楚银行普惠金融数智化案例&#xff1f; 不清楚银行跨境金融数智…...

142.乐理基础-音程的构唱练习

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;141.乐理基础-男声女声音域、模唱、记谱与实际音高等若干问题说明-CSDN博客 本次内容最好去看视频&#xff1a; https://apphq3npvwg1926.h5.xiaoeknow.com/p/course/column/p_5fdc7b16e4b0231ba88d94f4?l_progra…...

【比较mybatis、lazy、sqltoy、mybatis-flex操作数据】操作批量新增、分页查询(二)

orm框架使用性能比较 环境&#xff1a; idea jdk17 spring boot 3.0.7 mysql 8.0比较mybatis、lazy、sqltoy、mybatis-flex操作数据 测试条件常规对象 orm 框架是否支持xml是否支持 Lambda对比版本mybatis☑️☑️3.5.4sqltoy☑️☑️5.2.98lazy✖️☑️1.2.4-JDK17-SNAPS…...

ES920 Arduino库深度解析:Sub-1GHz工业无线通信实战指南

1. ES920无线模块Arduino库深度解析&#xff1a;面向工业级Sub-1GHz通信的工程实践指南ES920系列是日本Echostar公司推出的高性能Sub-1GHz无线通信模块&#xff0c;涵盖FSK调制的ES920与LoRa调制的ES920LR两个子型号。该系列模块专为日本920MHz ISM频段&#xff08;920.6–928.…...

STM32L152RE 32MHz时钟配置库:超低功耗MCU高频稳定启动方案

1. 项目概述ST_L152_32MHZ是一个专为 STMicroelectronics Nucleo-L152RE 开发板设计的轻量级时钟配置库&#xff0c;其核心目标是将系统主频&#xff08;SYSCLK&#xff09;从出厂默认的 32 kHz LSE 或 16 MHz HSI 稳定提升至32 MHz&#xff0c;并确保所有关键外设时钟&#xf…...

3D场景重建与实时渲染:XV3DGS-UEPlugin技术指南

3D场景重建与实时渲染&#xff1a;XV3DGS-UEPlugin技术指南 【免费下载链接】XScene-UEPlugin 项目地址: https://gitcode.com/gh_mirrors/xv/XScene-UEPlugin XV3DGS-UEPlugin是由XVERSE Technology Inc.开发的基于Unreal Engine 5的混合编辑插件&#xff0c;提供Gaus…...

视觉语言模型VLM高效部署:基于TensorRT-LLM的C++推理实践

1. 视觉语言模型VLM与TensorRT-LLM的黄金组合 视觉语言模型&#xff08;VLM&#xff09;这两年真是火得不行&#xff0c;它能让AI同时理解图片和文字&#xff0c;像人类一样看图说话。但实际部署时&#xff0c;很多团队都会遇到性能瓶颈——特别是用Python直接推理时&#xff0…...

别再只盯着KNN了:聊聊Wi-Fi指纹定位中那些被低估的匹配算法与实战选择

超越KNN&#xff1a;Wi-Fi指纹定位中的高阶匹配算法与工程化选型指南 商场里找不到心仪店铺的焦虑、仓库中耗时的手动货品盘点、医院里紧急设备定位的延迟——这些场景背后都指向同一个技术痛点&#xff1a;室内定位精度不足。当大多数开发者习惯性采用KNN算法时&#xff0c;我…...

ImageMagick安装后报错‘vcomp140.dll缺失’?手把手教你彻底解决Visual C++依赖问题

ImageMagick安装后报错‘vcomp140.dll缺失’&#xff1f;手把手教你彻底解决Visual C依赖问题 当你兴冲冲下载完ImageMagick准备大展身手时&#xff0c;命令行却突然弹出一串红色错误提示——"无法启动程序&#xff0c;因为计算机中丢失vcomp140.dll"。这种场景对于…...

Dify知识库创建全攻略:从零开始搭建你的AI问答系统(附分段模式详解)

Dify知识库创建全攻略&#xff1a;从零开始搭建你的AI问答系统&#xff08;附分段模式详解&#xff09; 在AI技术快速渗透各行各业的今天&#xff0c;构建专属知识库已成为企业智能化转型的核心基础设施。Dify作为一款开箱即用的AI应用开发平台&#xff0c;其知识库功能尤其适合…...

LibreHardwareMonitor:5分钟掌握免费开源硬件监控的终极指南

LibreHardwareMonitor&#xff1a;5分钟掌握免费开源硬件监控的终极指南 【免费下载链接】LibreHardwareMonitor Libre Hardware Monitor, home of the fork of Open Hardware Monitor 项目地址: https://gitcode.com/GitHub_Trending/li/LibreHardwareMonitor 想要实时…...

Java AI开发避坑!

文章目录一、当"龙虾"突然发狂二、解剖这场"史诗级翻车"第一刀&#xff1a;插件生态大迁徙第二刀&#xff1a;API 接口一锅端第三刀&#xff1a;安全沙箱锁死第四刀&#xff1a;目录结构洗牌三、Java 开发者的至暗时刻WebSocket 连接闪断MCP 适配器失效技能…...

计算机组成原理实验避坑指南:存储器地址映射常见错误及解决方法

计算机组成原理实验避坑指南&#xff1a;存储器地址映射常见错误及解决方法 第一次在Proteus里搭建存储器系统时&#xff0c;看着密密麻麻的地址线和片选信号&#xff0c;我对着实验指导书发呆了半小时——明明按照图示连接了所有线路&#xff0c;可写入RAM的数据总是莫名其妙出…...