迪克猪的博客
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

PostgreSQL数据库——Docker版本的postgres安装

一、介绍

PostgreSQL是一种非常先进的开源对象-关系型数据库管理系统(ORDBMS),它以其可靠性、健壮性、灵活性和支持标准SQL的能力而著称。以下是PostgreSQL的一些主要特点:

历史与发展

  • PostgreSQL项目起源于1986年的POSTGRES项目,该项目是由加州大学伯克利分校的Michael Stonebraker教授领导的。
  • 1996年,PostgreSQL项目从POSTGRES项目演进而来,并增加了SQL语言的支持。
  • PostgreSQL是自由软件,用户可以免费使用、修改和分发它。

核心特性

  • 扩展性:PostgreSQL允许用户自定义数据类型、函数和存储过程。它还支持编写外部插件来扩展数据库功能。
  • 事务性:它完全支持事务,并遵守ACID原则(原子性、一致性、隔离性、持久性)。
  • 可靠性:具有强大的故障恢复功能,可以在系统崩溃后快速恢复数据。
  • 支持标准:PostgreSQL支持大量的SQL标准,包括子查询、事务、联合、视图、外键和触发器等。
  • 多版本并发控制(MVCC):这允许高并发性,不会因为锁定而阻塞读操作。
  • 存储过程语言:支持多种程序设计语言,包括PL/pgSQL、C、Python、Java等。
  • 复制和分区:支持数据复制和分区,可以提高性能和可用性。

应用场景

  • Web应用:由于其强大的功能和灵活性,PostgreSQL常被用作Web应用的数据库后端。
  • 移动应用:适用于需要后端存储解决方案的移动应用。
  • 数据仓库:可以处理复杂的数据分析任务。
  • 地理信息系统(GIS):PostgreSQL通过PostGIS插件支持地理空间数据。

社区和支持

  • PostgreSQL拥有一个非常活跃的全球社区,不断开发和改进数据库。
  • 有许多公司和组织提供专业的支持服务。

安全性

  • 支持数据加密、用户身份验证、角色和权限管理,确保数据安全。

性能

  • PostgreSQL具有高效的查询优化器,能够处理大量数据。

兼容性

  • 与许多操作系统兼容,包括Linux、Windows、macOS等。 由于这些特点,PostgreSQL被广泛应用于各种规模的组织,从小的创业公司到大型企业,甚至是政府机构。它的开源性质也意味着任何人都可以自由地使用、修改和分发它,这极大地促进了其功能的丰富和社区的活跃。

二、Docker版本的postgres安装

查询

docker search postgres

拉取

docker pull postgres

查看本地镜像

docker images

恭喜,拉取成功~~

运行创建容器

docker run -d -p 5432:5432 --name postgres -e POSTGRES_PASSWORD=123456 postgres
  • name postgres:指定容器的名称;
  • e POSTGRES_PASSWORD=123456:设置环境变量,这里为设定PostgreSQL数据库的密码;
  • p 5432:5432:指定端口映射,前者为宿主机访问端口,后者为容器内端口。如果不指定端口映射,只有在容器内可以访问数据库,外部是无法访问的;
  • d:表示后台运行容器;
  • postgres:表示镜像的名称,docker基于上步拉取的镜像创建出容器;

查看容器:

docker ps

恭喜,运行成功!

查看日志

docker logs postgres

容器内连接数据库

docker exec -it postgres /bin/bash
  • exec:在容器中运行命令
  • postgres:为容器名称
  • -it:表示在当前终端为容器分配一个伪终端
  • /bin/bash:容器内运行/bin/bash终端

步骤一:创建连接 步骤二:创建数据库 出现错误,字符集问题: 使用命令创建cms数据库:

CREATE DATABASE cms  
    WITH 
    OWNER = postgres  
    ENCODING = 'utf8'  
    LC_COLLATE = 'en_US.utf8'  
    LC_CTYPE = 'en_US.utf8'  
    TABLESPACE = pg_default  
    CONNECTION LIMIT = -1;  

创建成功: 步骤三:导入mysql数据 使用data transfer进行数据导入及表结构创建工作: