• 在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数据库里的数据等。

  • 相关阅读:
    AWS亚马逊服务器搭建VPN
    Linux常用命令大全(非常全面)
    asp.net core 资源过滤器
    mysql使用--简单查询
    4年博主写博客的折腾之路
    ElasticSearch RestHighLevClient 之聚合操作
    【LeetCode】栈与单调栈题解汇总
    3D RPG Course | Core 学习日记四:鼠标控制人物移动
    接口测试场景:怎么实现登录之后,需要进行昵称修改?
    移动通信网络规划-容量评估和资源利用率评价
  • 原文地址:https://blog.csdn.net/ylnzzl/article/details/126103526