两个链接容器之间的连接失败:apache2/php & mysql
connection failed between two linked containers : apache2/php & mysql
我的两个容器:
容器 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
i link通过 --link=db
将第一个容器 "boxoffice" 编辑到第二个容器 "db"
我创建了一个 php 文件来测试 mysql 连接,该连接有一个名为 profil
的数据库
连接-php-mysql.php (/var/www/app) 在 "boxoffice" 容器中:
<?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():服务器请求的身份验证方法对客户端 [caching_sha2_password] 未知,在 /var/www/app/index.php 在线7
警告:mysqli_connect(): (HY000/2054): 服务器在 /var/www/app/index.php 上请求客户端未知的身份验证方法第 7 行
连接失败:服务器请求客户端未知的身份验证方法
我检查了第一个容器以获取主机 ip 地址:172.17.0.2 并将其替换为 db 作为服务器名,但我得到了同样的错误
而且我无法将用户名作为 root 获取错误:
mysql -u root
错误 1045 (28000):用户 'root'@'localhost' 的访问被拒绝(使用密码:否)
您需要升级到 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
我的两个容器:
容器 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
i link通过 --link=db
将第一个容器 "boxoffice" 编辑到第二个容器 "db"我创建了一个 php 文件来测试 mysql 连接,该连接有一个名为 profil
的数据库连接-php-mysql.php (/var/www/app) 在 "boxoffice" 容器中:
<?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():服务器请求的身份验证方法对客户端 [caching_sha2_password] 未知,在 /var/www/app/index.php 在线7
警告:mysqli_connect(): (HY000/2054): 服务器在 /var/www/app/index.php 上请求客户端未知的身份验证方法第 7 行 连接失败:服务器请求客户端未知的身份验证方法
我检查了第一个容器以获取主机 ip 地址:172.17.0.2 并将其替换为 db 作为服务器名,但我得到了同样的错误
而且我无法将用户名作为 root 获取错误:
mysql -u root
错误 1045 (28000):用户 'root'@'localhost' 的访问被拒绝(使用密码:否)
您需要升级到 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