Linux中部署PostgreSQL保姆级教程
一、版本说明
本文采用的版本号是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