Linux 上安装 PostgreSQL

qq_49415557 2024-07-31 17:07:02 阅读 88

文章目录

前言一、安装PostgreSQL二、修改数据库默认数据存储目录1.自定义数据存放目录2.修改自定义服务3.初始化数据库4.运行数据库

三、配置数据库信息四、权限

异常处理


前言

<code>提示:本次博客是centos7.9安装PostgreSQL12版本

名称 版本
Centos 7.9
postgresql 12
postgresql端口 5432
postgresql存储路径 /pgsql/12/data/

一、安装PostgreSQL

打开 PostgreSQL 官网

https://www.postgresql.org/download/

具体操作如下图所示:

Packages and Installers(软件包和安装程序)

Select your operating system family:(选择您的操作系统系列)

Select your Linux distribution:(选择您的 Linux 发行版)

在这里插入图片描述

选择完以上操作系统系列和操作系统发行版后会自动出现PostgreSQL Yum Repository如下图所示:

在这里插入图片描述

Select version:(选择要安装的数据库版本)

Select platform:(选择要安装的数据库操作系统)

Select architecture:(选择操作系统架构)

Copy, paste and run the relevant parts of the setup script:(复制、粘贴并运行设置脚本的相关部分)详细说明如下

<code>#安装PostgreSQL的yum仓库

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

#安装PostgreSQL 12版本

sudo yum install -y postgresql12-server

#初始化数据库(若要自定义数据库存储目录请先不要初始化数据库,参考后边章节后在初始化数据库)

sudo /usr/pgsql-12/bin/postgresql-12-setup initdb

#设置数据开机自启

sudo systemctl enable postgresql-12

#启动数据库

sudo systemctl start postgresql-12

数据库安装后的数据存储目录默认在/var/lib/pgsql/12/data,12为数据库的主版本号

二、修改数据库默认数据存储目录

#默认安装路径Environment=PGDATA=/var/lib/pgsql/15/data/

在没有初始化数据库之前,默认的data目录下是空的

在这里插入图片描述

1.自定义数据存放目录

<code>mkdir -p /pgsql/12/data/ #创建自定义数据存储目录

chown -R postgres:postgres /pgsql #修改目录权限

2.修改自定义服务

vi /usr/lib/systemd/system/postgresql-12.service

#修改默认环境变量数据存放路径,找到Environment修改为自己定义的数据存放目录

[Service]

Environment=PGDATA=/pgsql/12/data/ #修改完后保存退出

在这里插入图片描述

<code>#重新加载systemctl

systemctl daemon-reload

3.初始化数据库

#初始化数据库

sudo /usr/pgsql-12/bin/postgresql-12-setup initdb

在这里插入图片描述

可以看出/pgsql/12/data/目录下有很多文件,证明初始化成功

4.运行数据库

<code>#设置数据开机自启

sudo systemctl enable postgresql-12

#启动数据库

sudo systemctl start postgresql-12

三、配置数据库信息

1.修改密码

#切换到postgres用户

su postgres

#切换SQL模式

psql

#修改密码

alter user postgres with password 'postgres123';

#创建test用户

create user test with password 'test';

#授权

grant all privileges on database mydb to test;

#退出

\q

在这里插入图片描述

2.配置远程访问

<code>#打开防火墙端口

sudo firewall-cmd --add-port=5432/tcp --permanent

#刷新防火墙

sudo firewall-cmd --reload

3.修改配置文件

#此处是修改默认存储路径(默认:/var/lib/pgsql/12/data)

vim /pgsql/12/data/postgresql.conf

#取消监听注释,监听地址改为*

listen_addresses = '*'

修改配置文件如下图所示:

在这里插入图片描述

允许所有IP访问,即修改 pg_hba.conf 文件

<code>#此处是修改默认存储路径(默认:/var/lib/pgsql/12/data)

vim /pgsql/12/data/pg_hba.conf

#新增一行,若连接不上则将 scram-sha-256修改为trust 信任模式

host all all 0.0.0.0/0 trust

重启服务

sudo systemctl restart postgresql-12

修改配置文件如下图所示:

在这里插入图片描述

用Navicat连接数据库,连接信息如下图所示:

在这里插入图片描述

四、权限

<code>-- 创建一个新的只读用户

CREATE ROLE readonly_user WITH LOGIN PASSWORD 'password';

-- 为用户授予数据库的只读权限

GRANT CONNECT ON DATABASE your_database_name TO readonly_user;

GRANT USAGE ON SCHEMA public TO readonly_user;

GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonly_user;

GRANT SELECT ON ALL SEQUENCES IN SCHEMA public TO readonly_user;

异常处理

1)Navicat连接报错 错误代码:authentication method 10 not supported 或 致命错误:用户"postgres" Password 认证失败:

处理方案:在 pg_hba.conf 文件中可将新增的 0.0.0.0/0 的模式改为 trust

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。