• 在docker容器里连接上本地mysql8.0.30数据库的方法


    目录

    概述

    具体步骤


    概述

    默认情况下,Docker会创建一个名为docker0的网桥。 Docker主机和Docker容器在该网桥上都有一个IP地址。在这个模式下,docker容器与主机的网络是不互通的,docker 及docker下的容器之间有个地址相同 (同ip段),外网访问只能通过端口映射。如果docker容器里的nginx需要连本机mysql , 那么可以将mysql的3306端口打开,通过外网去连接。

    具体步骤

    (1). 切换到root账号,否则保存文件时会提示文件处于只读状态。

    在主机命令行里运行命令:

    su root


    (2). 修改mysql配置文件,修改配置为允许远程连接,并开放3306端口。

    在主机命令行里运行命令:

    vim  /etc/mysql/mysql.conf.d/mysqld.cnf


    然后用字符#注释掉如下两行代码:

    1. bind-address = 127.0.0.1
    2. mysqlx-bind-address = 127.0.0.1


    (3). 重启mysql服务。

    在主机命令行里运行命令:

    1. service mysql stop
    2. service mysql start


    (4). 检查3306端口是否开启成功。
    在主机命令行里运行命令:

    netstat -an|grep 3306


    如果出现:::3306,而不是127.0.0.1:::3306,那么就表示3306端口已开启成功。

    运行结果示例图:

     
    (5). 查看docker容器连接主机的ip地址。
    在主机命令行里运行命令:

    ifconfig

    在结果列表中找到docker0这一项对应的inet值。

    运行结果示例图:

    也可以在主机命令行里运行命令:

    ip addr show docker0

    来找到对应的inet值。

    运行结果示例图:

     
    (6). 修改对应程序.env文件里的mysql配置项,其中hostname这一项填写前面步骤里找到的docker0网桥的inet值【例如172.17.0.1】,并对应着修改mysql配置项里的数据库名称、用户名、密码为自己本地mysql软件里对应数据库的名称、用户名、密码。


    (7). 重启容器并检查容器状态是否为正在运行中(running)。

    在项目容器目录下运行命令:
     

    1. # 重启容器
    2. docker-compose restart
    3. # 查看容器列表
    4. docker-compose ps

    容器列表中status这一列的值为running就表示容器状态为正在运行中,即刚才重启容器的操作已成功执行完毕。

    (8). 运行项目程序并访问项目地址,检查项目程序是否可以正常运行、使用的数据来源是否是本地mysql数据库里的数据等。

  • 相关阅读:
    运行时间监控:如何确保网络设备运行时间
    路由和node环境搭建
    一种基于相似语义文本生成的信息隐写方法
    Kubernetes云原生实战03 搭建高可用负载均衡器(Keepalived 和 HAproxy)
    PointRend: 将图像分割视为渲染——PointRend:Image Segmentation as Rendering
    【nginx】详细配置
    项目管理工具dhtmlxGantt入门教程(二):如何初始化dhtmlxGantt(上)
    【计算机毕设选题推荐】超市管理系统SpringBoot+SSM+Vue
    汉语言语的声学特点是什么
    VUE后台管理系统模板
  • 原文地址:https://blog.csdn.net/ylnzzl/article/details/126103526