使用Docker搭建Postgresql数据库,及设置远程访问
一、拉取Postgresq镜像
docker pull postgres
二、构建镜像容器
docker run -it --name postgress --restart always -e TZ='Asia/Shanghai' -e POSTGRES_PASSWORD='abc123' -e ALLOW_IP_RANGE=0.0.0.0/0 -v /home/postgres/data:/var/lib/postgresql -p 55435:5432 -d postgres
–name : 自定义容器名称
--restart always 此处设置容器在docker 重启时自动启动容器
POSTGRES_PASSWORD:数据库密码
-e ALLOW_IP_RANGE=0.0.0.0/0,这个表示允许所有ip访问,如果不加,则非本机 ip 访问不了, 此处这样设置下面的第五步就可以省略
-e TZ='Asia/Shanghai' 设置时区,此处设置就不需要修改配置文件了,
-v :进行映射,本地目录:容器内路径
-p:映射端口,宿主机端口:容器端口
最后是 镜像名称:端口号
三、进入postgres容器
docker exec -it postgres bash
四、切换当前用户,再登录数据库
将当前root切换成postgres
su postgres
输入用户名,密码再命令执行完后,再根据提示输入
psql -U postgres -W
输入密码,登录成功
经过我的实践,docker pull的已经可以支持远程连接了,不需要在进行下面的步骤,请酌情考虑进行下面的步骤
五、设置远程访问许可(很重要)
共需要修改两个配置文件:pg_hba.conf、postgresql.conf,步骤分别如下:
1、修改postgres配置文件
首先,确认已进入容器,再按下列步骤操作:
1)、修改pg_hba.conf文件
A、用命令将postgres中的pg_hba.conf文件,复制到目录/home中
docker cp postgres:/var/lib/postgresql/data/pg_hba.conf /home
1
B、用Xftp连接服务器,找到home下的pg_hba.conf,并用记事本打开及修改用户的访问权限(#开头的行是注释内容):
# TYPE DATABASE USER CIDR-ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
*host all all 0.0.0.1/0 md5*
# IPv6 local connections:
host all all ::1/128 trust
####C、用命令将修改后的文件,替换掉原来的配置文件
docker cp /home/pg_hba.conf postgres:/var/lib/postgresql/data
2)、修改postgresql.conf文件
如上述修改pg_hba.conf一样,先复件到/home文件夹中,然后打开编辑,最后替换掉原配置文件。
定位到 #listen_addresses = ’localhost’,再将行开头都#去掉,并将行内容修改为 localhost 改成:*
listen_addresses = ’*’
网友评论