找回密码
 立即注册

QQ登录

只需一步,快速开始

@Martin.Zhang
中级会员   /  发表于:2022-11-10 15:12  /   查看:2222  /  回复:0
本帖最后由 James.Lv 于 2023-1-5 17:36 编辑

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

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

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

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



异常排查
如果在链接过程中出现这个错误,那么请将 pg_hba.conf 文件中 md5 全都改成 trust 然后再重启 postgresql 服务
  1. postgreSQL: password authentication failed for user "postgres"
复制代码

有些时候会提示端口未开放
  1. 开放端口
  2. firewall-cmd --zone=public --add-port=5432/tcp --permanent   # 开放5432端口
  3. firewall-cmd --zone=public --remove-port=5432/tcp --permanent  #关闭5432端口
  4. firewall-cmd --reload   # 配置立即生效
  5. 查看防火墙所有开放的端口
  6. firewall-cmd --zone=public --list-ports
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部