Docker 部署 PostgreSQL 服务

news/2024/7/9 21:15:00 标签: docker, postgresql, 容器, 数据库, sql

拉取最新版本的 PostgreSQL 镜像:

$ sudo docker pull postgres:latest

在本地预先创建好 data 目录, 用于映射 PostgreSQL 容器内的 /var/lib/sql>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/sql>postgresql/data postgres:latest
  • -itd (以交互的方式,新建一个模拟终端运行容器)
    • -i (在后台运行容器,并且打印容器ID)
    • -t (分配一个伪TTY)
    • -d (保持STDIN打开状态)
  • --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/sql>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

进入和退出 PostgreSQL 容器

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

切换当前用户为 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

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

用户管理

查看当前用户信息:

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

创建用户

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

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

删除用户

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

postgres=# DROP USER 用户名称;
DROP ROLE

数据库管理

查看当前数据库信息:

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)

进入某个数据库

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

创建数据库

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

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

数据库权限

命令 GRANT 定义访问特权:

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

删除数据库

命令 DROP DATABASE 移除一个数据库

postgres=# DROP DATABASE 数据库名称;
DROP DATABASE

用户登录

$ 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.

数据库名称=>

表管理

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

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

创建表

命令 CREATE TABLE 定义一个新表:

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

删除表

命令 DROP TABLE 移除一个表:

=> DROP TABLE 表名称;
DROP TABLE

http://www.niftyadmin.cn/n/5045566.html

相关文章

Ctfshow web入门 phpCVE篇 web311-web315 详细题解 全

CTFshow phpCVE web311 CVE-2019-11043 PHP远程代码执行漏洞复现(CVE-2019-11043)【反弹shell成功】-腾讯云开发者社区-腾讯云 (tencent.com) 漏洞描述 CVE-2019-11043 是一个远程代码执行漏洞,使用某些特定配置的 Nginx PHP-FPM 的服务…

Arcgis常用操作技巧

20个Arcgis常用操作技巧 1)影像格式的转换 例如把jpg格式转换为tiff格式,可以在arctoolbox中的转换工具-->到光栅-->光栅到其他多种格式(conversiontools-->to Raster-->Raster to Other Format multiple)。 矢量化…

【新版】系统架构设计师 - 案例分析 - 架构设计<SOA与微服务>

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 案例分析 - 架构设计<SOA与微服务>例题1例题2例题3例题4 架构 - 案例分析 - 架构设计<SOA与微服务> 这里SOA与微服务的例题只对应找寻了几个&#x…

蓝桥杯打卡Day12

文章目录 接龙数列冶炼金属 一、接龙数列OJ链接 本题思路:本题是一道经典的dp问题,设第i个数的首位数字是first, 末位数字是last。因为第i个数只可能加到一个以first结尾的接龙数列中使得这个接龙数列长度加1并且结尾数字变成last.所以状态转移方程为d…

第五章React路由

文章目录 一、React的基本使用1-1、react-router-dom1-1-1、react-router-dom基本使用 1-2、一般组件与路由组件1-3、NavLink1-4、封装自己的组件--MyNavLink1-5、Switch的使用1-6、多级地址样式失效问题1-7、模糊匹配1-8、严格匹配1-9、Redirect重定向1-10、嵌套路由1-11、向路…

同城跑腿代驾小程序平台开发

一款针对同城跑腿代驾事务帮办开发的小程序,可以更好的做同城流量和变现。 基于lbs实时定位,准确率高,自动规划,实时变更,高效快捷的帮助需要跑腿服务和代驾服务的用户以及骑手和代驾师傅。 程序经过多次迭代升级&a…

CSS滚动条详解(::-webkit-scrollbar )

滚动条出现的事件&#xff1a; 当设置定宽或者定高的元素添加overflow:scroll属性&#xff0c;会出现滚动条&#xff0c;但是原生样式的会比较丑影响美观。 <div class"content"><div class"contain"></div> </div>.content {wid…

正则表达式:整数

正则表达式&#xff1a;整数 校验字符串&#xff0c;为有效的整数。 校验规则 只能为&#xff1a;整数&#xff08;包括&#xff1a;正整数、负整数、零&#xff09; 不能为&#xff1a;非数值型的字符串 不能为&#xff1a;小数 不能为&#xff1a;一连串的0&#xff08;比…