使用Docker从php连接到MySQL服务器

13

我是 Docker 新手。正在 Docker 环境中开发 PHP 应用程序,需要使用 MySql 服务器/数据库来持久化数据。根据文档,我运行以下命令以创建 MySql 服务器镜像:

docker run -v /var/lib/mysql mariadb

它已经下载了,但我也遇到了以下错误:

错误: 数据库未初始化,密码选项未指定。您需要在 MYSQL_ROOT_PASSWORD、MYSQL_ALLOW_EMPTY_PASSWORD 和 MYSQL_RANDOM_ROOT_PASSWORD 中指定其中一个。

如何设置 MYSQL_ALLOW_EMPTY_PASSWORD 选项?

然后我该如何在此镜像上创建数据库,并从我的 PHP 代码(位于另一镜像中)读写它?


请查看此链接:https://dev59.com/1FkS5IYBdhLWcg3wj3jP - Devy
1个回答

23

创建容器

运行以下命令:docker run --name some-mariadb -e MYSQL_ROOT_PASSWORD=mysecretpw -v mysql:/var/lib/mysql -d mariadb:latest

通过此命令,您将创建一个mariadb的docker容器,并将数据存储在mysql文件夹中。在命令中,您有-e MYSQL_ROOT_PASSWORD=my-secret-pw。这将设置您的根密码为my-secret-pw。当您连接到它时,您的用户名为root,密码为my-secret-pw

查找地址

docker inspect some-mariadb - 运行此命令,您将找到有关容器的所有信息。您需要您的IP地址。

提示:docker inspect some-mariadb | grep IPAddress,这将使您更轻松地找到您的IP地址。

连接

现在,进入PHP部分。运行下面的PHP代码,但是请检查您的主机地址,对于我来说是172.17.0.2(来自PHP文档):

<?php
$link = mysqli_connect("172.17.0.2", "root", "my-secret-pw");

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

echo "Success: A proper connection to MySQL was made!" . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;

mysqli_close($link);

如果一切正常,你会看到:

A proper connection to MySQL was made!
Host information: 172.17.0.2 via TCP/IP

提示:对于创建数据库,运行所需的命令与在没有使用Docker的数据库中执行相同(CREATE DATABASE mydb)。

这只是为了开始。我建议你学习docker compose。当你掌握它时,你会学到很多关于Docker优势的知识。


它卡在这一行上 $link = mysqli_connect("172.17.0.2", "root", "my-secret-pw"); - Drake
2
已解决,原因是容器中没有安装mysql扩展。对于其他人,我使用以下命令安装了它:apt-get install php-mysqli,然后使用apache2ctl stopapache2ctl start重启了我的Apache服务器。 - Drake

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接