Ubuntu 安装PostgreSQL

打印 上一主题 下一主题

主题 824|帖子 824|积分 2472

1. 安装 PostgreSQL 包



  • 使用 apt-get 下令安装 PostgreSQL 客户端和服务器包:
  1. sudo apt update
  2. sudo apt install postgresql postgresql-client
复制代码
2. 启动 PostgreSQL 服务



  • 在 Ubuntu 中,PostgreSQL 服务默认会自动启动。
  • 你可以使用以下下令来启动服务:
  1. sudo systemctl start postgresql
复制代码


  • 设置 PostgreSQL 服务开机自启:
  1. sudo systemctl enable postgresql
复制代码
3. 配置 PostgreSQL



  • 在 Ubuntu 中,PostgreSQL 的配置文件通常位于 /etc/postgresql/{version}/main/
4. 创建新用户X



  • 以PostgreSQL 超级用户登录psql
  1. #登录psql
  2. sudo -u postgres psql
复制代码


  • 在psql下令行界面里,创建新用户X
  • root 用户在 PostgreSQL 中通常已经存在
  • 你可能需要使用其他用户名
  1. CREATE ROLE X LOGIN;
复制代码


  • 大概直接一步到位:创建用户
  1. sudo -u postgres createuser --username postgres X
复制代码
5. 创建新数据库Y



  • 在 psql 下令行界面中,使用 CREATE DATABASE 下令创建新的数据库。

    • 例如,如果你想创建名为 Y 的数据库,可以执行以下下令:
      1. CREATE DATABASE Y;
      复制代码

  • 在psql下令行界面中,授权给特定用户

    • 例如,你可以将数据库 Y 的所有者设置为新用户X:
      1. ALTER DATABASE Y OWNER TO X;
      复制代码

  • 大概一步到位:你可以在创建数据库时直接指定所有者:
  1. CREATE DATABASE Y OWNER X;
复制代码
6. 创建数据库Y的表incoming_test schema=public



  • 用新用户X登录PostgreSQL 数据库Y:
  1. sudo -u X psql Y # -h localhost -p 5432 -w ; -w指无密码登录
复制代码


  • 在psql 下令行界面中创建表:
  1. CREATE TABLE incoming_test (
  2. recorded_on TIMESTAMP WITH TIME ZONE NOT NULL,
  3. "Accounting-Record-Type" INTEGER,
  4. "Session-Id" BYTEA,
  5. "Accounting-Record-Number" INTEGER,
  6. "Route-Record1" BYTEA,
  7. "Route-Record2" BYTEA,
  8. "Route-Record3" BYTEA,
  9. "Route-Record4" BYTEA
  10. );
复制代码


  • 退出 psql
  1. \q
复制代码
6.1 psql登录失败的处置惩罚



  • 修改 /etc/postgresql/XX/main/pg_hba.conf文件
  • 将local all all peer -> local all all trust
  • 重启postgresql服务
6.2 psql api登录失败的处置惩罚



  • 修改 /etc/postgresql/XX/main/pg_hba.conf文件
  • 将host all all 127.0.0.1/32 peer -> host all all 127.0.0.1/32 trust
  • 重启postgresql服务
7. 查询数据库Y



  • 使用新用户X登录数据库Y

    • 检察数据库:执行下令 \l

      • 效果雷同mysql的show databases;

    • 选择数据库:执行下令 \c database

      • 效果雷同mysql的use database;

    • 检察该数据库的表:执行下令 \dt

      • 效果雷同mysql的show tables;

    • 查询该数据库的表:与mysql一致的select语句

  • postgres 检察全部数据库
  • 查询的字段较多,可用直接回车换行连续输入,达到折叠的效果
8.删除数据库Y的incoming_test表



  • 毗连psql数据库
  • 切换到指定的数据库:\c dbname
  • 删除该表: drop table if exists incoming_test;
  • \dt \dt+等为psql元下令,不必以;结束
  • 其他sql,如mysql那样,必须;结束
9.删除数据库Y



  • 登录到 PostgreSQL
  1. sudo -u X psql #若失败,可用postgres超级用户登录
复制代码


  • 删除数据库
  1. DROP DATABASE IF EXISTS Y;
复制代码


  • 退出 psql
  1. \q
复制代码
10. 删除用户X



  • 登录到 PostgreSQL
  1. sudo -u postgres psql
复制代码


  • 删除用户X
  1. DROP ROLE IF EXISTS X;
复制代码


  • 退出 psql
  1. \q
复制代码
11.完全卸载 PostgreSQL



  • 制止 PostgreSQL 服务
  1. sudo systemctl stop postgresql
复制代码


  • 卸载 PostgreSQL 包
  1. sudo apt remove --purge postgresql postgresql-contrib
复制代码


  • 删除 PostgreSQL 数据文件**: 慎重 可跳过
  1. sudo rm -rf /var/lib/postgresql/*
复制代码


  • 清理残留文件
  1. sudo apt autoremove
  2. sudo apt clean
复制代码
10.1 想规复PostgreSQL 数据目录

  1. # 重建目录
  2. sudo mkdir -p /var/lib/postgresql/XX/main
  3. # 更改权限
  4. sudo chown -R postgres:postgres /var/lib/postgresql/XX/main
  5. # 重建数据库存储目录
  6. sudo -u postgres /usr/lib/postgresql/XX/bin/initdb -D /var/lib/postgresql/XX/main
  7. # 之后能解决该目录异常为空,postgresql没有真正运行的问题
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

魏晓东

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表