@Martin.Zhang 发表于 2022-11-10 15:12:40

【安装运维-环境安装】Ubuntu下安装postgres数据库

本帖最后由 James.Lv 于 2023-1-5 17:36 编辑

小白分享给小白的操作教程 , 希望给有需要的人一点帮助.老手不是问题的问题,但是作为新手却要研究很久,这里按步骤给大家分享一下如何完成安装配置.

在Ubuntu中安装postgres 并且可以远程访问

1. 更新Ubuntu包
sudo apt-get update
sudo apt-get upgrade2. 安装官方源
# 创建文件存储库配置
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
# 导入存储库签名密钥
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
# 更新包列表
sudo apt-get update
# 安装最新版本的PostgreSQL
sudo apt-get -y install postgresql
3.安装完成后运行一下命令进行查看
   安装完成之后 , 会在 系统中创建一个 postgres 用户 , 不要问为什么 , 但是他就是创建了
# 查看postgresql版本
sudo -u postgres psql -c "SELECT version();"
# 查看postgresql服务是否启动
service postgresql status4. 数据库配置
# 切换用户
sudo su postgres
# 进入交互界面
psql5.创建数据库
-- 创建数据库(test)
create database test;
-- 删除数据库(test)
drop database test;
-- 查询所有数据库
\l
-- 切换数据库test
\c test
6. 创建schema
-- 创建schema(ods),以下写法均可
create schema ods;
create schema if not exists ods;
-- 为某个用户(root2)创建market
create schema market authorization roo2;
-- 查看当前数据库下的所有schema
select * from information_schema.schemata;
-- 删除schema(ods)
drop schema if exists ods;
7.用户权限授权
-- 给用户root赋予超级用户权限
alter user root with superuser;
-- 给用户root2赋予普通权限
alter userroot2 with privileges;
-- 把数据库的所有权限给予用户root
grant all privileges on database test to root;
-- 把某schema下(ods)的所有表(test用户下)的所有权限给予用户root2
grant all on all tables in schema ods to root2;
-- 把某张表(test_table)的所有权限给予用户root2
grant all on test_table to root2;
-- 把某张表(test_table)的查询权限给予用户root2
grant select on table test_table to root2;
-- 撤销用户root2的某个数据库(test)权限;
revoke all on database test from root2;
-- 撤销用户root2某个schema(ods)下所有表的修改(update)权限;
revoke update on all tables in schema ods from root2;
-- 撤销用户root2某张表(test_table)的所有权限
revoke privileges on test_table from root2;
-- 将某张表(test_table)的所有者给root2
alter table test_table owner to root2;
-- 允许用户(root)登录
ALTER ROLE root WITH LOGIN;
-- 禁止用户(root)登录
ALTER ROLE root WITH NOLOGIN;
8. 配置远程访问 这一步是关键,远程访问不通,就是这里的问题
# 删除postgres用户的密码
sudo passwd -d postgres
# 设置postgres用户的密码
sudo -u postgres passwd配置完密码后,编辑/etc/postgresq/12/main/postgresql.conf文件
sudo vim /etc/postgresql/12/main/postgresql.conf在上述配置文件postgresql.conf中添加以下内容:
listen_addresses = '*'
password_encryption = scram-sha-256在pg_hba.conf文件末尾追加以下内容:
host    all             all             0.0.0.0/0               trust添加完成后,保存退出,然后重启postgresql 服务。
sudo service postgresql restart

9.配置好之后,可以用一下命令登录
psql -U postgres -h 127.0.0.2 -p 5432 -d postgres


异常排查
如果在链接过程中出现这个错误,那么请将 pg_hba.conf 文件中 md5 全都改成 trust 然后再重启 postgresql 服务
postgreSQL: password authentication failed for user "postgres"
有些时候会提示端口未开放
开放端口
firewall-cmd --zone=public --add-port=5432/tcp --permanent   # 开放5432端口
firewall-cmd --zone=public --remove-port=5432/tcp --permanent#关闭5432端口
firewall-cmd --reload   # 配置立即生效
查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
页: [1]
查看完整版本: 【安装运维-环境安装】Ubuntu下安装postgres数据库