【云原生】docker 搭建单机PostgreSQL操作详解
目录
一、前言
二、前置准备
2.1 服务器环境
2.2 docker环境
三、docker安装PostgreSQL过程
3.1 获取PostgreSQL镜像
3.2 启动容器
3.2.1 创建数据卷目录
3.2.2 启动pg容器
3.3 客户端测试连接数据库
四、创建数据库与授权
4.1 进入PG容器
4.2 PG常用操作命令
4.2.1 进入命令行
4.2.2 常用操作命令
四、写在文末
一、前言
在实际项目中,PostgreSQL具有很多使用场景,为了方便应用开发时快速接入和调试,需要有PostgreSQL环境,本文演示如何基于linux环境搭建单节点postgresql完整操作过程。
二、前置准备
2.1 服务器环境
基于centos7以上版本的系统,虚拟机或云服务一台,配置不低于2C4G。
2.2 docker环境
提前在服务器安装docker环境,后面需要基于docker安装PostgreSQL。
三、docker安装PostgreSQL过程
3.1 获取PostgreSQL镜像
使用下面的命令获取镜像
docker pull postgres
3.2 启动容器
3.2.1 创建数据卷目录
为了后续pg数据的持久化,需要提前创建一个数据卷映射目录
mkdir /usr/local/soft/pg/data
3.2.2 启动pg容器
使用下面的命令启动postgresql的容器
docker run -d \
--name postgres \
-e POSTGRES_USER=root\
-e POSTGRES_PASSWORD=123456 \
-e ALLOW_IP_RANGE=0.0.0.0/0 \
-e POSTGRES_DB=postgres \
-v /usr/local/soft/pg/data:/var/lib/postgresql/data \
-p 54132:5432 \
postgres:latest
参数说明:
-
-d ,以后台进程启动;
-
--name ,指定容器的名字为 :root;
-
POSTGRES_USER=postgres ,指定初始化的连接账户;
-
POSTGRES_PASSWORD=123456 ,指定初始化的连接密码;
-
ALLOW_IP_RANGE=0.0.0.0/0 ,指定允许所有的客户端可以连接;
-
POSTGRES_DB=postgres ,指定默认的数据库名称;
-
-v /usr/local/soft/pg/data:/var/lib/postgresql/data ,指定pg数据库的数据卷;
-
-p 5432:5432 ,容器与宿主机的映射端口,默认为5432 ;
容器运行成功,可以看到启动了一个pg的容器;
3.3 客户端测试连接数据库
本地使用navicat连接pg数据库,使用上述初始化的连接信息
四、创建数据库与授权
和mysql在使用的时候类似,为了保证操作pg数据库的安全性,需要进行相关的授权操作,pg的授权与mysql数据库的授权有所不同,接下来看具体的操作演示过程。
4.1 进入PG容器
找到容器ID,使用下面的命令进入容器
docker exec -it 容器ID /bin/bash
4.2 PG常用操作命令
4.2.1 进入命令行
进入容器之后,使用下面的命令进入PG的操作命令行,类似于mysql的命令行工具
psql -U postgres -h 服务器IP -p 54132 postgres
输入密码,验证成功后,就来到下面的命令行操作界面:
4.2.2 常用操作命令
1)列出当前所有数据库
\l
2)列出当前数据库的所有表
默认情况下,登录进来使用的是postges这个数据库,使用下面的命令可以查看所有表
3)切换数据库
使用下面的命令切换到另一个数据库
\c 数据库名称
4)创建数据库
CREATE DATABASE 数据库名称;
5)创建账户
CREATE USER 用户名 WITH PASSWORD '密码';
6)账户授权
pg数据库中对于连接的账户需要进行授权,有数据库授权,表授权等,下面分别是数据库授权,表授权的命令
-
一般下面这两个命令是连起来用的,即先对数据库的连接账户授权,仅仅授权数据库还不够,还需要对数据库下面的所有表授权才可正常使用;
GRANT CONNECT, CREATE, TEMPORARY ON DATABASE "数据库名称" TO 用户名;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO 用户名;
补充说明
- 设置默认权限,使某个用户对未来在 public 模式下创建的表也拥有全部权限
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO 用户名;
四、写在文末
本文通过实际案例操作演示了如何基于Docker搭建pg的完整过程,并补充了pg数据库操作的常用命令和授权命令,希望对看到的同学有用,本篇到此结束,感谢观看。