Linux中部署PostgreSQL保姆级教程

news2024/12/23 22:34:32

一、版本说明

        本文采用的版本号是postgresql-14.4。

        官网资源包下载地址:PostgreSQL: File Browser

二、安装前的准备

2.1安装依赖

2.1.1安装编译工具
yum install -y gcc gcc-c++

这个命令安装了 GNU 编译器集合(gcc)和 GNU C++ 编译器(gcc-c++)。这些是编译 PostgreSQL 源代码所必需的。 


2.1.2安装 readline 开发库
yum install -y readline-devel

readline-devel 包提供了额外的头文件和库,用于开发与 readline 库兼容的程序。readline 是一个库,用于提供命令行编辑和历史功能,PostgreSQL 需要这个库来支持其命令行工具。


2.1.3安装 zlib 开发库
yum install -y zlib-devel

zlib-devel 包包含了 zlib 压缩库的开发文件,包括头文件和用于链接的库文件。PostgreSQL 使用 zlib 来进行数据压缩。

2.2创建postgres用户与用户组

2.2.1创建postgres用户组
groupadd postgres

2.2.2创建postgres用户,并添加到postgres用户组
useradd postgres -r -g  postgres
  • useradd postgres:创建一个名为 postgres 的新用户。
  • -r:指定创建的是一个系统账户。系统账户通常用于运行系统服务,而不是普通用户登录。
  • -g postgres:指定用户的主组为 postgres。如果该组不存在,则会创建一个同名的组。

三、基于压缩包安装(推荐)

3.1解压压缩包

前置准备(在根目录下创建softWare文件夹,并进入到softWare文件夹下):

①在根目录下创建softWare文件夹

 mkdir /softWare

②进入到softWare文件夹下

 cd /softWare
3.1.1将压缩包(postgresql-14.4.tar.gz)下载到softWare文件夹下

①方法一:将准备好的文件上传上去(推荐)

②方法二:通过wget下载

        wget命令如下:

wget https://ftp.postgresql.org/pub/source/v14.4/postgresql-14.4.tar.gz


3.1.2解压

确保压缩包文件已上传成功:

解压命令如下:

tar -zxvf postgresql-14.4.tar.gz 

3.2编译和安装

3.2.1创建安装目录(安装在/usr/local/postgresql目录)
mkdir /usr/local/postgresql

3.2.2进入解压的目录下(当前目录/softWare) 
cd postgresql-14.4

3.2.3指定安装前缀
./configure --prefix=/usr/local/postgresql

3.2.4构建(编译)
make

3.2.5安装
make install

3.3创建存放postgresql数据的目录,初始化数据库并启动

3.3.1创建数据目录
mkdir /usr/local/postgresql/data

3.3.2创建日志目录
mkdir /usr/local/postgresql/log

3.3.2修改数据、日志目录的所属用户与用户组均为postgres
chown -R postgres:postgres /usr/local/postgresql/data
chown -R postgres:postgres /usr/local/postgresql/log

3.3.3始化数据库

①切换到postgres用户

su postgres

②初始化数据库

/usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data

命令解释

/usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data 是一个用于初始化 PostgreSQL 数据库集群的命令。

命令参数

  • /usr/local/postgresql/bin/initdb: 这是 initdb 命令的路径,initdb 是 PostgreSQL 提供的一个用于创建新的数据库集群的工具。
  • -D /usr/local/postgresql/data-D 参数指定了数据库集群的数据目录,即 /usr/local/postgresql/data。这个目录将存储所有数据库文件。

3.4启动数据库,并将日志打印到pg.log文件上

/usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l /usr/local/postgresql/log/pg.log start

命令解释

该命令用于启动PostgreSQL数据库服务器。

命令参数解释

  • -D /usr/local/postgresql/data: 指定PostgreSQL数据目录的路径。这是数据库文件存储的地方。
  • -l /usr/local/postgresql/log/pg.log: 指定日志文件的路径,PostgreSQL的启动和运行日志将记录在此文件中。
  • start: 指示pg_ctl启动PostgreSQL服务器。

3.5进入数据库和修改密码

3.5.1进入数据库
/usr/local/postgresql/bin/psql -p 5432

3.5.2查看所有数据库用户
\du 

PostgreSQL 数据库安装后,默认的用户名通常是 postgres。这个用户也被称为“超级用户”账户,因为它拥有数据库中的所有权限,并且可以执行任何数据库操作。

3.5.3修改管理员postgres的密码

修改管理员postgres的密码为postgres:

ALTER USER postgres WITH PASSWORD 'postgres';

3.6修改配置

3.6.1设置连接访问规则(修改配置文件pg_hba.conf,在文件末尾添加)
host    all             all              0.0.0.0/0              md5

①进入目录

cd /usr/local/postgresql/data/

 ②编辑pg_hba.conf文件

vim pg_hba.conf

在PostgreSQL的pg_hba.conf 文件中,“host all all 0.0.0.0/0 md5”是一种连接访问规则:

  • host:表示这是针对主机连接的规则类型。
  • all(第一个):适用于所有的数据库。
  • all(第二个):适用于所有的用户。
  • 0.0.0.0/0:这是一个网络标识。其中“0.0.0.0”为IP地址,“/0”为子网掩码,表示允许来自任何IP地址的主机连接。
  • md5:这是一种认证方法。使用md5意味着客户端连接数据库时需要提供经过md5加密后的密码进行身份验证。与“trust”(信任模式不需要密码)相比,这种方式更安全,适用于需要一定安全保障的场景,如生产环境或对外提供服务且需要限制访问权限的数据库环境。

3.6.2设置PostgreSQL数据库服务器监听所有可用的网络接口上的传入连接请求

①进入目录

cd /usr/local/postgresql/data/

②编辑postgresql.conf文件

vim postgresql.conf

修改listen_address为任意ip ,即 listen_addresses = '*'

如果此步骤报错,切换到root用户执行

3.6.3重启数据库
/usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l /usr/local/postgresql/log/pg.log restart

3.6.4测试连接

对外访问,需要开通端口

 3.7常用命令

3.7.1linux中命令行中使用的psql命令
参数参数含义
-h连接数据库服务器的IP
-p数据库服务器的端口号
-U连接数据库服务器时使用数据库用户
-w连接服务器时不需要输入用户密码(默认不输入用户密码)
-W连接服务器时需要输入用户密码
-d指定要连接的数据库(默认连接postgres数据库)
-c执行单一的SQL命令
-f执行sql脚本文件
-V输出版本信息
--连接本地数据库,端口号为5432,使用postgres用户,连接test数据库
./psql -h 127.0.0.1 -p 5432 -U postgres -d test
--执行sql脚本文件/root/pg.sql
./psql -h 127.0.0.1 -p 5432 -U postgres -d test -f /root/pg.sql
--执行SQL语句
./psql -h 127.0.0.1 -p 5432 -U postgres -d test -c "sql_one;sql_two;"
--查看数据库版本
./psql -V

3.7.2pg命令行中使用的psql命令
命令含义
\h查看sql语法
\l列出所有数据库
\dn列出所有schema(模式)
\db显示所有表空间(相当于一个目录,表放在表空间中)
\d查看当前schema中所有的表、视图、序列
\dt只显示匹配的表
\di只显示匹配的索引
\ds只显示匹配的序列
\dv只显示匹配的视图
\df只显示匹配的函数
\sf查看指定的函数定义
\du列出数据库中所有用户
\dp显示表的分配情况
\c切换数据库
\q退出pg命令行
--查看所有数据库
postgres=# \l
--显示pg内部的函数acos
postgres=# \df acos
--查询acos函数的函数定义
postgres=# \sf acos
--退出pg命令行
postgres=# \q

3.7.3实际常用命令总结

①进入数据库(在bin目录下,即/usr/local/postgresql/bin)

切换到postgres用户

su postgres

进入数据库(默认连接postgres数据库)

./psql -h 127.0.0.1 -p 5432 -U postgres 

②查询所有的数据库

\l

③查看当前所在的数据库

SELECT current_database();

④创建数据库

CREATE DATABASE "数据库名"; 

⑤切换数据库

\c "数据库名"

⑥查询当前数据库所有的表

\dt

⑦启动、重启、关闭数据库

切换postgres用户

/usr/local/postgresql/bin/pg_ctl -D /usr/local/postgresql/data -l /usr/local/postgresql/log/pg.log start|restart|stop

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

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

相关文章

11月1日笔记(UAC绕过)

Bypass UAC 用户账户控制(User Account Control,UAC)是 Windows 操作系统采用的一种控制机制,可以阻止自动安装未经授权的应用并防止意外更改系统设置,有助于防止恶意软件损坏计算机。用户账户控制使应用程序和任务始终在非管理员账户的安全…

什么是计算机视觉算法?——深度剖析背后的技术与应用

计算机视觉(Computer Vision)作为人工智能的重要分支,正在逐渐改变我们的生活。从人脸识别到自动驾驶,从医疗影像诊断到视频监控,计算机视觉的应用无处不在,而支撑这一切的正是计算机视觉算法。那么&#x…

客户案例 | Ansys助力Lumotive将设计周期缩短两到三个数量级

“我们使用Ansys Lumerical FDTD、亚马逊云科技(AWS)和 Python API设计了这种超表面,同时使其与CMOS制造公差兼容。Lumerical的AWS解决方案有助于Lumotive将设计周期缩短两到三个数量级,而且不会增加成本或降低准确性。” —— P…

如何打开/关闭 GitLab 的版本检查功能?

本文分享如何打开/关闭 GitLab 的版本检查功能。 极狐GitLab 是 GitLab 的中国发行版【https://dl.gitlab.cn/ncecn6kb】,中文版本对中国用户更友好,文章以私有化部署的极狐GitLab 实例来演示版本检查功能的开启和关闭。强烈不建议关闭该功能&#xff0…

软件测试学习笔记丨Selenium复用已打开浏览器

本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/22520 本文为霍格沃兹测试开发学社的学习经历分享,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~ 说明:本篇博客基于sel…

Java并发常见面试题总结(下)

Map(重要) HashMap 和 Hashtable 的区别 线程是否安全: HashMap 是非线程安全的,Hashtable 是线程安全的,因为 Hashtable 内部的方法基本都经过synchronized 修饰。(如果你要保证线程安全的话就使用 ConcurrentHashMa…

从比亚迪超越特斯拉,看颠覆全球市场的中国力量

这是比亚迪CEO王传福早年在日本调研电池供应链时发出的感慨。 那时的人们谁也没有想到,比亚迪会从深圳的一家普通的电池供应商开始做起,拼出一条属于自己的“血路”,摇身一变成为名副其实的“电车之王”,并让全球车企仰望。 比亚…

最长方连续方波信号

更多关于刷题的内容欢迎订阅我的专栏华为刷题笔记 该专栏题目包含两部分: 100 分值部分题目 200 分值部分题目 所有题目都会陆续更新,订阅防丢失 题目描述 输入一串方波信号,求取最长的完全连续交替方波信号,并将其输出&#x…

Mac “屏幕保护程序启动或显示器关闭后需要密码“无效

屏幕保护程序启动或显示器关闭后需要密码只能选择“立即”的解决方法: 在 iPhone mirror中设置,每次询问权限。 参考:https://support.apple.com/en-us/120421

Unity自定义数组在Inspector窗口的显示方式

了解 单行高度:EditorGUIUtility.singleLineHeight获取 PropertyField 控件所需的高度:EditorGUI.GetPropertyHeight属性是否在Inspector窗口展开:SerializedProperty.isExpanded可重新排序列表类:ReorderableList绘制纯色矩形:EditorGUI.Dr…

LBPH算法实现人脸匹配

在当今数字化时代,人脸检测技术在众多领域都发挥着至关重要的作用,从安防监控到智能手机的解锁功能等。今天,就让我们深入了解一下其中一种常用的人脸检测方法 ——LBPH(Local Binary Patterns Histograms)&#xff0c…

遥感图像Trento原始数据集下载

遥感图像Trento原始数据集下载 偶然间在某个项目里发现了Trento的完整数据集,不过那个数据集有些奇怪的小改动 虽然我已经不做遥感方向了,不过当初我找这个数据集也是花了很长时间 于是重新整理了一下,就当是方便后来的研究者使用吧 githu…

洛雪音乐 1.6.1| 全网音乐免费听,附加音源

洛雪音乐汇集了多个平台的音乐资源,让你可以免费播放各种热门音乐。有经典怀旧的老歌,有最近火爆网络的热曲,还有很多原创音乐人发布的最新作品。因触动资本利益,现已转为空壳软件,需要导入音源来使用。功能特点包括&a…

Flutter学习笔记(二)------ 第一个flutter项目

一、Dart语法 dart语法较为简单,学过python和c后发现大同小异。不过多介绍 1.函数可变参数 可以类比*args, **kwargs,与之不同的是dart中,*args **kwargs不能同时存在 void a(int a, [float x, double b0.0]) {//do something... }a(10, …

【项目小技巧】【C++】 Debug 日志输出 调用者的函数名,所在文件名和行号

文章目录 一、先编写好输出日志的函数二、使用宏定义新的函数三、效果展示 一、先编写好输出日志的函数 /*** 输出 Debug 信息* param [message] [debug 信息]* param [fileName] [调用该函数的文件名字]* param [line] [在文件的第几行]**/ void DebugLog(std::string messag…

行业应用 | 克劳斯玛菲磁力换模项目案例分享

包装行业的发展趋势表明,绿色包装和技术创新是未来的重要方向。双色注塑机的应用正好符合这一趋势,因为它能够减少材料使用,提高生产效率,同时生产出更具吸引力和功能性的包装产品。随着技术的进步和市场需求的增长,双…

音视频入门基础:FLV专题(22)——FFmpeg源码中,获取FLV文件音频信息的实现(中)

本文接着《音视频入门基础:FLV专题(21)——FFmpeg源码中,获取FLV文件音频信息的实现(上)》,继续讲解FFmpeg获取FLV文件的音频信息到底是从哪个地方获取的。本文的一级标题从“四”开始。 四、音…

Hudi Upsert原理

1. 前言 如果要深入了解Apache Hudi技术的应用或是性能调优,那么明白源码中的原理对我们会有很大的帮助。Upsert是Apache Hudi的核心功能之一,主要完成增量数据在HDFS/对象存储上的修改,并可以支持事务。而在Hive中修改数据需要重新分区或重…

Proteus中单片机IO口外接LED输出低电平时,引脚却一直保持高电平的问题(已解决)

文章目录 前言解决方法后记 前言 一个排阻接八个 LED,方便又省事,但出现了P1端口输出低电平后,仿真引脚却一直显示红色保持高电平不变,用电压表测量显示 2V 左右。 这是仿真的问题,在用开发板时是不会遇到的&#xff…

医院信息化与智能化系统(15)

医院信息化与智能化系统(15) 这里只描述对应过程,和可能遇到的问题及解决办法以及对应的参考链接,并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图,可以试试PlantUML,告诉GPT你的文件结构,让他给你对应…