docker部署Postgresql数据库
摘要:本文介绍使用Docker快速部署PostgreSQL 9.4.26数据库的步骤。首先通过docker pull命令下载指定版本镜像,然后使用docker run命令创建容器,配置了自动重启、数据库账号密码、IP访问权限、数据卷持久化存储及端口映射等参数。重点解释了各参数含义,包括-v实现数据持久化和-p实现外部访问的关键作用。该方案简化了PostgreSQL的安装部署过程,同时确保数据安全性
一、下载Postgresql镜像
docker pull postgres:9.4.26
二、创建宿主机文件夹
mkdir -p /usr/local/postgres/data
三、创建Postgresql容器
docker run --name postgres --restart always -e POSTGRES_PASSWORD='admin' -e POSTGRES_USER='admin' -e ALLOW_IP_RANGE=0.0.0.0/0 -v /usr/local/postgres/data:/var/lib/postgresql -p 5432:5432 -d postgres:9.4.26
–name 自定义容器名称
–restart=always 重启docker时,自动启动容器
-e POSTGRES_PASSWORD: Postgresql数据库密码
-e POSTGRES_USER: Postgresql数据库账号
-e ALLOW_IP_RANGE=0.0.0.0/0,表示允许所有ip访问,如果不加,则非本机ip访问不了
-v 本地文件系统目录:容器内目录(v是volume的简写,即绑定一个卷,冒号前的路径为宿主机的路径(如果指定路径不存在会自动创建目录),冒号后为容器内路径。容器会把宿主机的目录映射到容器内的路径,这样容器运行中生成的数据实际上就是写到了宿主机的指定路径上,即使容器删除了,此路径的文件也不会删除,这样就做到了数据库的持久化存储。还可以通过docker volume提供的相关命令显式地创建volume:docker volume create postgres-volume,然后再挂载到容器上:postgres-volume:/var/lib/postgresql/data,这里不做详细介绍,请自行查询相关内容)
-p 映射端口,宿主机端口: 容器端口。如果不指定端口映射,只有在容器内可以访问数据库,外部是无法访问的;
-d 是detached模式运行(即以分离模式运行容器,以便它在后台运行)
postgres:9.4.26:表示镜像的名称,docker基于上步拉取的镜像创建出容器
启动失败

查看日志
docker logs postgres

这个错误是由于容器内的 PostgreSQL 数据目录无法创建而导致的。该目录的默认位置是 /var/lib/postgresql/data。通常,此问题是由于文件系统权限配置不正确或该目录不可写入所导致的。
给宿主机赋值权限
chown 777 /usr/local/postgres10 /usr/local/postgres/data
四、navicat连接数据库
创建超级用户
CREATE USER pgsqldb1 superuser PASSWORD 'pgsqldb1';
创建用户和角色唯一的区别是:创建用户默认有login权限,创建角色默认没有login权限。
五、常用命令
-- 查看所有角色
SELECT rolname FROM pg_roles;
-- 基础创建(仅登录权限)
CREATE ROLE pgsqldb1 WITH LOGIN;
-- 常用创建(带密码、可创建数据库/角色)
CREATE ROLE pgsqldb1 WITH
LOGIN -- 允许登录
PASSWORD '你的密码' -- 设置密码(替换成实际密码)
CREATEDB -- 允许创建数据库
CREATEROLE; -- 允许创建其他角色
-- 如果需要让该角色拥有超级权限(仅测试/特殊场景用)
-- CREATE ROLE pgsqldb1 WITH LOGIN SUPERUSER PASSWORD '你的密码';
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)