PostgreSQL详细安装教程

#安装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 15版本
sudo yum install -y postgresql15-server

#初始化数据库(若要自定义数据库存储目录请先不要初始化数据库,参考后边章节后在初始化数据库)
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
#设置数据开机自启
sudo systemctl enable postgresql-15
#启动数据库
sudo systemctl start postgresql-15

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

1.自定义数据存放目录

sudo mkdir -p /pgsql/15/data/             #创建自定义数据存储目录
sudo chown -R postgres:postgres /pgsql    #修改目录权限
sudo chmod -R 700 /pgsql                  #授权目录

2.修改自定义服务

vi /usr/lib/systemd/system/postgresql-15.service
#修改默认环境变量数据存放路径,找到Environment修改为自己定义的数据存放目录
[Service]
Environment=PGDATA=/pgsql/15/data/   #修改完后保存退出

#重新加载systemctl
systemctl daemon-reload

3.初始化数据库

#初始化数据库
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb

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

4.运行数据库

#设置数据开机自启
sudo systemctl enable postgresql-15
#启动数据库
sudo systemctl start postgresql-15

三、配置数据库信息

1.修改密码

#切换到postgres用户
su postgres
#切换SQL模式
psql
#修改密码
alter user postgres with password 'postgres@123';
#创建test用户
create user test with password 'test';
#授权
grant all privileges on database mydb to test;
#退出
\q

2.配置远程访问

 #开放防火墙端口命令
 
 firewall-cmd --query-port=5432/tcp
 
 firewall-cmd --zone=public --add-port=5432/tcp --permanent
 
 firewall-cmd --reload

#如果防火墙是iptables用下面这个
vi /etc/sysconfig/iptables #编辑防火墙配置文件
#增加下面这行
-A INPUT -p tcp -m state --state NEW -m tcp --dport 5432 -j ACCEPT

:wq! #保存退出

systemctl restart iptables.service #最后重启防火墙使配置生效

systemctl enable iptables.service #设置防火墙开机启动

/usr/libexec/iptables/iptables.init restart #重启防火墙

3.修改配置文件

#此处是修改默认存储路径(默认:/var/lib/pgsql/12/data)
vim /pgsql/15/data/postgresql.conf
#取消监听注释,监听地址改为* 
listen_addresses = '*'

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

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

#此处是修改默认存储路径(默认:/var/lib/pgsql/15/data)
vim /pgsql/15/data/pg_hba.conf
#新增一行,若连接不上则将 scram-sha-256修改为trust 信任模式
host    all             all             0.0.0.0/0               trust
 重启服务
sudo systemctl restart postgresql-15

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

四、权限

-- 创建一个新的只读用户
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

五、卸载

第一步:卸载旧版本的PostgreSQL:

sudo yum remove postgresql postgresql-server

sudo yum remove postgresql-contrib

sudo yum remove postgresql*

第二步:删除PostgreSQL的数据文件和配置文件:

sudo rm -rf /var/lib/postgresql/

sudo rm -rf /etc/postgresql/

环境变量设置

vim /etc/profile 

export PATH=$JAVA_HOME/bin:/usr/pgsql-15/bin:$PATH

source /etc/profile

CentOS报错:Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7\&arch=x86_64\&repo=os\&infra=stock32 error was 14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"问题

如果还不行 更新yum源

3.1.阿里

3.1.1备份当前的yum源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

3.1.2下载新的CentOS-Base.repo 到/etc/yum.repos.d/

CentOS 7

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

或者

curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

3.1.3 清空并生成缓存

yum clean all

yum makecache

参考链接:https://blog.csdn.net/gnwu1111/article/details/140172717

向量数据库:PGVector

参考

Linux服务器快速安装PostgreSQL15以及pgvector向量插件_慕课手记

下面这个问题的解决

/usr/lib/postgresql/10/lib/pgxs/src/makefiles/pgxs.mk:没有这样的文件或目录

PostgreSQL: Simple C extension Development for a Novice User (and Performance Advantages)

相关推荐
夜泉_ly1 小时前
MySQL -安装与初识
数据库·mysql
qq_529835352 小时前
对计算机中缓存的理解和使用Redis作为缓存
数据库·redis·缓存
月光水岸New5 小时前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山6755 小时前
数据库基础1
数据库
我爱松子鱼5 小时前
mysql之规则优化器RBO
数据库·mysql
chengooooooo5 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser6 小时前
【SQL】多表查询案例
数据库·sql
Galeoto6 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)7 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231117 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql