您的浏览器过于古老 & 陈旧。为了更好的访问体验, 请 升级你的浏览器
j0785 发布于2022年11月30日 17:19 最近更新于 2022年12月14日 16:32

原创 Windows平台下解决Docker连接MySQL报错:Warning: mysqli::__construct(): (HY000/2002)

3218 次浏览 读完需要≈ 4 分钟 WindowsDockerNginxPHPMySQL

内容目录

  • 环境搭建成功后,index.php文件代码如下:

    $servername = "127.0.0.1:3007";
    $username = "root";
    $password = "123456";
    //创建连接
    $conn = new mysqli($servername, $username, $password);
    
    //检测连接
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }
    echo "Connected successfully";
  • 运行提示如下错误:
    Warning: mysqli::__construct(): (HY000/2002): Connection refused in /www/index.php on line 6
  • 修改代码如下:

    $servername = "localhost:3007";
  • 运行依然提示错误:

    Warning: mysqli::__construct(): (HY000/2002): Connection refused in /www/index.php on line 6

  • 这一看好吧,mysql连接的地址有问题,参考之前Nginx关联PHP容器时修改的配置,改成MySQL容器的ip地址,修改代码如下:

    $servername = "172.17.0.4"; //查看MySQL容器的ip地址 docker inspect --format='{{.NetworkSettings.IPAddress}}' myMysql
  • 或者修改代码如下:

    $servername = "myMysql";//NOTICE:这里的myMysql是指连接的MySQL容器的别名
  • 运行成功,问题解决!
  • 在PHP连接Docker运行中的MySQL容器时,不能用localhost或者127.0.0.1来连接,因为每个docker运行容器的localhost 和127.0.0.1都是当前容器,而不是MySQL容器,需要修改成容器 IP,或者是mysql容器名称

    1669797141264(1).jpg

Notice:之前创建MySQL容器,没有对MySQL容器与PHP容器进行关联,即使代码里面连接MySQL的主机名称修改成容器IP/容器名称也会执行错误。仍然报以上错误!

  • CodePlayer技术交流群1
  • CodePlayer技术交流群2

0 条评论

撰写评论