1. 拉取镜像
docker pull postgres
2. 创建并且启动容器
docker run -it --name postgres --restart=always -e POSTGRES_PASSWORD='abc123@commonServer' -e ALLOW_IP_RANGE=0.0.0.0/0 -v /home/postgres/data:/var/lib/postgresql/data -p 55433:5432 -d postgres
参数说明:
- --name postgres 设置容器名称
- --restart always 设定自启动
- -e POSTGRES_PASSWORD='abc123@commonServer' 设定数据库密码
- -e ALLOW_IP_RANGE=0.0.0.0/0 设定允许访问的ip 范围
- -v /home/postgres/data:/var/lib/postgresql 设置挂载目录,宿主机路径在前,容器路径在后
- -p 55433:5432 端口映射 宿主机在前,容器在后
- -d postgres 启动 postgres 数据库
3. 登录数据库
3.1 进入容器内部
docker exec -it postgres bash
3.2 切换用户
su postgres
3.3 登录PG数据库,然后输入密码回车
psql -U postgres -W
显示如下,说明成功登录数据库
[root@localhost contains]# docker exec -it postgres bash
root@611ba53a575c:/#
root@611ba53a575c:/# su postgres
postgres@611ba53a575c:/$
postgres@611ba53a575c:/$ psql -U postgres -W
Password:
psql (16.4 (Debian 16.4-1.pgdg120+1))
Type "help" for help.
postgres=#
4. 修改访问ip 白名单
编辑/var/lib/pgsql/13/data/pg_hba.conf
增加:
host all all 0.0.0.0/0 password
保存后退出,重启容器即可
注意
PG数据库
PostgreSQL在查询时,如果字段名中有大小写混合的情况且字段名首字母非大写,则在查询这样的字段时必须加双引号,否则汇报字段不存在的错误。
去除 with nolock
关键字,去掉中括号
大小写的字段,全部转为双引号字段