一、首先准备pg数据库的docker镜像
二、先创建一个文件作为pg数据库数据文件、配置文件等的外部挂载文件
三、创建镜像
docker run -it -d --name postgres14 --restart=always --privileged=true -p 5432:5432 -e POSTGRES_PASSWORD=postgres -v /home/fengyang/pg_data:/var/lib/postgresql 9f3ec01f884d
这样就创建好容器了,先看一下我们挂载的目录,已经有了一个data目录
参数解释:
-p:端口映射,物理机的5432端口映射到容器内部5432端口
-e:设置密码,就是登录数据库的密码(这里要注意两点,一是设置密码时候,不用加引号,二是postgre数据库有一个默认用户名就是postgres)
-v:文件挂载,把容器内的文件挂载到容器外,这样需要修改东西的话就不用再进入到容器里了
--restart=always:开机自启
--privileged=true: 给自己容器内部一些操作的权限,其实这里并不需要,只是个人习惯
三、开始操作数据库
进入容器内部:
进入数据库:psql -U 用户名 数据库(这里的数据库可以省略,不写默认进入postgres库) -W 按回车输入密码,密码就是创建容器时候,-e设置的
四、数据库基本操作
创建数据库:create database 数据库名;
查看所有数据库:SELECT * FROM pg_database ORDER BY datname
进入数据库:\c 数据库; 密码同理是创建容器时 -e 设置的。
创建用户: create user 用户名 with password '密码';
查看所有用户: SELECT * FROM pg_roles;
创建模块: create schema 模块名;
查看所有模块: SELECT * FROM information_schema.schemata;
给操作某模块的用户赋权限:GRANT ALL PRIVILEGES ON schema 模块名 TO 用户;
通过备份文件导入数据:
1) exit; 退出数据库
2)docker cp将备份文件复制到容器中
3)pg_restore -d 数据库 -U 用户名 备份文件; 导入备份文件(注意 如果这里不写-U 用户名 会默认到root用户名下,一般容易报错)。