• Docker 部署 PostgreSQL 服务


    拉取最新版本的 PostgreSQL 镜像:

    $ sudo docker pull postgres:latest
    
    • 1

    在本地预先创建好 data 目录, 用于映射 PostgreSQL 容器内的 /var/lib/postgresql/data 目录。

    使用以下命令来运行 PostgreSQL 容器:

    $ sudo docker run -itd --name postgres -e POSTGRES_PASSWORD=连接PostgreSQL的密码 -e ALLOW_IP_RANGE=0.0.0.0/0 -p 5432:5432 -v /home/ubuntu/docker/postgres/data:/var/lib/postgresql/data postgres:latest
    
    • 1
    • -itd
      • -i (以交互模式运行容器, 通常与 -t 同时使用)
      • -t (为容器分配一个伪输入终端, 通常与 -i 同时使用)
      • -d (后台运行容器)
    • --name (给容器起一个名字方便管理)
    • -e POSTGRES_PASSWORD=连接PostgreSQL的密码 (设置环境变量, 指定连接PostgreSQL的密码)
    • -e ALLOW_IP_RANGE=0.0.0.0/0 (设置环境变量, 允许所有IP访问)
    • -p 5432:5432 (将容器的5432端口映射到主机的5432端口)
    • -v /home/ubuntu/docker/postgres/data:/var/lib/postgresql/data (文件挂载目录)

    通过 docker ps 命令查看容器的运行信息:

    $ sudo docker ps
    CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS                PORTS                                               NAMES
    bd7e0efc8e5b   postgres:latest             "docker-entrypoint.s…"   36 seconds ago   Up 35 seconds         0.0.0.0:5432->5432/tcp, :::5432->5432/tcp           postgres
    
    • 1
    • 2
    • 3

    进入和退出 PostgreSQL 容器:

    $ sudo docker exec -it postgres /bin/bash
    root@xxx:/# exit
    
    • 1
    • 2

    切换当前用户为 postgres 用户, 登录数据库:

    $ sudo docker exec -it postgres /bin/bash
    root@xxx:/# su postgres
    postgres@xxx:/$ psql
    psql (16.0 (Debian 16.0-1.pgdg120+1))
    Type "help" for help.
    
    postgres=# exit
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    需要退出时, 使用 exit 一层一层的退出。

    用户管理

    查看当前用户信息:

    postgres=# SELECT * FROM pg_user;
     usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig
    ----------+----------+-------------+----------+---------+--------------+----------+----------+-----------
     postgres |       10 | t           | t        | t       | t            | ******** |          |
    (1 rows)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建用户

    命令 CREATE USER 定义一个新的数据库角色:

    postgres=# CREATE USER 用户名称 WITH PASSWORD '用户密码';
    CREATE ROLE
    
    • 1
    • 2

    删除用户

    命令 DROP USER 移除一个数据库角色:

    postgres=# DROP USER 用户名称;
    DROP ROLE
    
    • 1
    • 2

    数据库管理

    查看当前数据库信息:

    postgres=# \l
                                                          List of databases
       Name    |  Owner   | Encoding | Locale Provider |  Collate   |   Ctype    | ICU Locale | ICU Rules |   Access privileges
    -----------+----------+----------+-----------------+------------+------------+------------+-----------+-----------------------
     postgres  | postgres | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           |
     template0 | postgres | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | =c/postgres          +
               |          |          |                 |            |            |            |           | postgres=CTc/postgres
     template1 | postgres | UTF8     | libc            | en_US.utf8 | en_US.utf8 |            |           | =c/postgres          +
               |          |          |                 |            |            |            |           | postgres=CTc/postgres
    (3 rows)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    进入某个数据库:

    postgres=# \c 数据库名称
    You are now connected to database "数据库名称" as user "postgres".
    数据库名称=#
    
    • 1
    • 2
    • 3

    创建数据库

    命令 CREATE DATABASE 创建一个新数据库:

    postgres=# CREATE DATABASE 数据库名称 OWNER 拥有该数据库的用户名称;
    CREATE DATABASE
    
    • 1
    • 2

    数据库权限

    命令 GRANT 定义访问特权:

    postgres=# GRANT ALL PRIVILEGES ON DATABASE 数据库名称 TO 用户名称;
    GRANT
    
    • 1
    • 2

    删除数据库

    命令 DROP DATABASE 移除一个数据库:

    postgres=# DROP DATABASE 数据库名称;
    DROP DATABASE
    
    • 1
    • 2

    用户登录

    $ sudo docker exec -it postgres /bin/bash
    root@xxx:/# psql -U 用户名称 -W -d 数据库名称
    Password:
    psql (16.0 (Debian 16.0-1.pgdg120+1))
    Type "help" for help.
    
    数据库名称=>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    表管理

    查看当前数据库中的所有表信息:

    => \d
            List of relations
     Schema | Name  | Type  |  Owner
    --------+-------+-------+---------
     public | 表名称 | table | 用户名称
    (1 row)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    创建表

    命令 CREATE TABLE 定义一个新表:

    => CREATE TABLE 表名称 (
        code   char(5) CONSTRAINT firstkey PRIMARY KEY,
        title  varchar(40) NOT NULL
    );
    CREATE TABLE
    
    • 1
    • 2
    • 3
    • 4
    • 5

    删除表

    命令 DROP TABLE 移除一个表:

    => DROP TABLE 表名称;
    DROP TABLE
    
    • 1
    • 2
  • 相关阅读:
    一个Windows远程工具,小巧但实用,支持RDP、SSH、SFTP、FTP等多种协议
    CompletableFuture用法详解
    基于ssm微信小程序的4S店客户管理系统
    debian/ubuntu 编译安装nginx php
    事件捕获和时间冒泡,event.stopPropagation();event.preventDefault();和js jquery取消事件
    蓝桥杯练习
    Android平台GB28181设备接入模块CSDN博客汇总
    Dev C++开发环境的配置及使用
    初始化成员列表
    各种格式文件预览
  • 原文地址:https://blog.csdn.net/hekaiyou/article/details/133222995