首页 > 解决方案 > 使用 PHP 连接到 Azure Database for MySQL

问题描述

无法连接到我的 Azure Database for MySQL。这是我的PHP代码:

class access {

    var $user = "##";
    var $pass = "##";
    var $conn = null;
    var $result = null;
    var $StudentID = null;
    var $sql = null;

    public function connect() {
        $this->conn = new mysqli( host: 'autosign.database.windows.net', username: '##', passwd: '##', dbname: 'Automat');
        if (mysqli_connect_error()){
            echo 'Could not connect to database';
        } else {
            echo 'Connected and Selected';
        }
    }
}

我正在使用 XAMMP 运行 PHP 脚本。我正在使用模板应用程序,因此无法使用默认的 Azure 应用程序连接,并且我未能成功使用可下载的 Azure 框架。

标签: phpazureazure-database-mysql

解决方案


我的第一直觉告诉我,您的 Azure Database for MySQL 配置为需要 SSL,而您的代码没有使用它。

你有两个选择:

  1. 禁用 SSL 要求(不推荐
  2. 配置您的 PHP 代码,使其使用 SSL 进行连接

执行 #1 和 #2 的文档在这里,带有代码示例:https ://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl#php

简而言之:

从https://www.digicert.com/CACerts/BaltimoreCyber​​TrustRoot.crt.pem下载 SSL CA 证书,并将其放入包含 PHP 代码的文件夹中。然后,编辑连接,使其类似于(从文档复制):

$conn = mysqli_init();
mysqli_ssl_set($conn, NULL, NULL, "/path/to/your/cert/BaltimoreCyberTrustRoot.crt.pem", NULL, NULL); 
mysqli_real_connect($conn, 'autosign.mysql.database.azure.com', $user, $pass, 'Automat', 3306, MYSQLI_CLIENT_SSL, MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT);

推荐阅读