【问题标题】:connection failed between two linked containers : apache2/php & mysql两个链接容器之间的连接失败:apache2/php & mysql
【发布时间】:2020-03-30 18:57:12
【问题描述】:

对于我的两个容器:

容器 1:

        - name: boxoffice
        - containerPort : 80
        - hostPort: 3030
        - service installed : apache2 and php

命令运行容器 1:

docker run  --name=boxoffice -p 3030:80 -v /Users/mac/Desktop/storage-web:/var/www/app -d  --link=db medoneapache:latest

容器 2:

        - name: db
        - containerPort : 3306
        - hostPort: 3306
        - service installed : mysql

命令运行容器 2:

docker run --name=db -p 3306:3306   -v /Users/mac/Desktop/storage-db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=medone -d  mysqlmedone:1.0

我通过 --link=db 将第一个容器“boxoffice”链接到第二个容器“db”

我创建了一个 php 文件来测试有一个名为 profile 的数据库的 mysql 连接

“boxoffice”容器中的connection-php-mysql.php (/var/www/app):

<?php
$servername = "db";
$username = "root";
$password = "medone";

// Create connection
$conn = mysqli_connect($servername, $username, $password);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

这是我得到的错误:

警告:mysqli_connect():第 7 行 /var/www/app/index.php 中的服务器请求客户端未知的身份验证方法 [caching_sha2_password]

警告:mysqli_connect(): (HY000/2054): 服务器在第 7 行的 /var/www/app/index.php 中请求客户端未知的身份验证方法 连接失败:服务器请求客户端未知的身份验证方法

我检查了第一个容器以获取主机 IP 地址:172.17.0.2 并将其替换为 db 作为服务器名,但我遇到了同样的错误

我无法以 root 身份获取用户名,但出现错误:

mysql -u root

错误 1045 (28000):拒绝用户 'root'@'localhost' 访问(使用密码:否)

【问题讨论】:

    标签: php mysql docker mysqli containers


    【解决方案1】:

    您需要升级到 PHP 7.4.4。

    仅在 PHP 7.4.4 的 mysqli 和 PDO 中都添加了对 caching_sha2_password 的支持。

    相关功能请求:https://bugs.php.net/bug.php?id=79275
    GitHub 公关:https://github.com/php/php-src/pull/5210

    【讨论】:

    • 能否请您添加更改日志的链接?
    • @MarcinOrlowski 当然可以。添加了功能请求和 PR 的链接。
    • 成功了,从 php 7.3.16 升级到 php 7.4 @Dharman 谢谢
    猜你喜欢
    • 1970-01-01
    • 2022-01-13
    • 2020-06-29
    • 2018-12-22
    • 2019-03-01
    • 1970-01-01
    • 2021-05-17
    • 2016-03-19
    • 1970-01-01
    相关资源
    最近更新 更多