当前位置: 首页 > news >正文

Docker 部署 PostgreSQL 服务

拉取最新版本的 PostgreSQL 镜像:

$ sudo docker pull postgres:latest

在本地预先创建好 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
  • -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/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=# \lList of databasesName    |  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/postgrestemplate1 | 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.数据库名称=>

表管理

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

=> \dList of relationsSchema | 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.lryc.cn/news/173879.html

相关文章:

  • 【通信误码】python实现-附ChatGPT解析
  • 人与机器只能感知到可以分类的事物?
  • 2023华为杯数学建模竞赛E题
  • AIX360-CEMExplainer: MNIST Example
  • TouchGFX之自定义控件
  • Python中match...case的用法
  • 深度学习自学笔记二:逻辑回归和梯度下降法
  • 【Element】通知 Notification
  • vue+express、gitee pm2部署轻量服务器(20230923)
  • 前端教程-H5游戏开发
  • Nginx 关闭/屏蔽 PUT、DELETE、OPTIONS 请求
  • 【React】React概念、特点和Jsx基础语法
  • 大数据的崭露头角:数据湖与数据仓库的融合之道
  • 用go实现cors中间件
  • Linux 链表示例 LIST_INIT LIST_INSERT_HEAD
  • 【机器学习】详解回归(Regression)
  • mac 配置 httpd nginx php-fpm 详细记录 已解决
  • Angular 项目升级需要注意什么?
  • 开发高性能知识付费平台:关键技术策略
  • python图像匹配:如何使用Python进行图像匹配
  • R语言绘制PCA双标图、碎石图、变量载荷图和变量贡献图
  • Jolokia 笔记 (Kafka/start/stop)
  • Qt5开发及实例V2.0-第十九章-Qt.QML编程基础
  • 固定开发板的ifconfig的IP地址
  • 停车场系统源码
  • R语言贝叶斯MCMC:GLM逻辑回归、Rstan线性回归、Metropolis Hastings与Gibbs采样算法实例...
  • 若依前后端分离如何解决匿名注解启动报错?
  • Spring面试题4:面试官:说一说Spring由哪些模块组成?说一说JDBC和DAO之间的联系和区别?
  • 【再识C进阶3(上)】详细地认识字符串函数、进行模拟字符串函数以及拓展内容
  • docker启动mysql8目录挂载改动