【问题标题】:MySQLi real_connect FailedMySQLi real_connect 失败
【发布时间】:2019-02-24 18:39:05
【问题描述】:

我无法在下面的 PHP 代码中使用 SSL 连接 MySQL 数据库(存在于另一台服务器中)。 我尝试了链接中的步骤:https://docs.microsoft.com/en-us/azure/mysql/howto-configure-ssl

谁能告诉我这些步骤应该怎么做?

仅供参考,我可以从命令行连接 MySQL 数据库。

无法连接到 MySQL:php_network_getaddresses:getaddrinfo 失败:名称或服务未知

    $db = mysqli_init();
    //mysqli_options ($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
    mysqli_ssl_set($db,"/var/www/html/path/cert/client-key.pem","/var/www/html/path/cert/client-cert.pem","/var/www/html/path/BaltimoreCyberTrustRoot.crt.pem",NULL,NULL);
    $c=mysqli_real_connect($db, 'example.com','uname@uname','mypassword','database',3306,NULL, MYSQLI_CLIENT_SSL);
    if(mysqli_connect_errno($db)){
     echo "<br>Failed to connect to MySQL: " . mysqli_connect_error();
    }
    else
    {
    $sql = 'show tables ';
    echo $sql.'<br>';
    $result = mysqli_query($db,$sql); 
    $rows = array();
    if(!empty($result)){
                while ($row = mysqli_fetch_assoc($result)){
                $rows[] = $row;
                echo '<pre>'; echo json_encode($row, JSON_PRETTY_PRINT);
                }
          }
    }

【问题讨论】:

  • 你试过普通的mysqli_connect()吗?好的,你需要它。
  • 嗯,“example.com”似乎是问题所在,由于这只是一个示例,因此无法判断问题所在。
  • @PraveenKumarPurushothaman,当我们使用 SSL 连接 MySQL 时,我们不能使用 mysqli。同意吗?
  • @deceze 那是主机名!同意吗?
  • ……是吗?!而且PHP好像找不到了。

标签: php ssl mysqli mysql-connect


【解决方案1】:

您是否在 Azure 中尝试这样做?请确保pem文件有正确的路径和权限

连接数据库时要解决的问题:

  1. 下载此 pem 密钥并将文件重命名为“BaltimoreCyber​​TrustRoot.crt.pemhttps://www.digicert.com/CACerts/BaltimoreCyberTrustRoot.crt.pem

  2. 在 Azure 服务器中启用 SSL 连接。

  3. 直接在数据库中运行MySQL命令“status”,检查SSL: Cipher in use is AES256-SHA
  4. 在测试文件中添加以下代码,并确保主机名、用户名、密码、端口和 pem 文件的路径和权限非常正确。

试试下面的代码示例:

    {
$db = mysqli_init();  mysqli_ssl_set($db,NULL,NULL,"/var/www/html/path/BaltimoreCyberTrustRoot.crt.pem",NULL,NULL);
$connection = mysqli_real_connect($db, 'example.com','uname@uname','mypassword','database_name',3306,NULL, MYSQLI_CLIENT_SSL);


   if(mysqli_connect_errno($db))
   { 
echo "<br><b>Failed to connect to MySQL: " . mysqli_connect_error()."<b>";
   } 
else
   {
   $sql = 'show tables ';
   $result = mysqli_query($db,$sql);
   $rows = array();
   if(!empty($result))
        {
             while ($row = mysqli_fetch_assoc($result)){
             $rows[] = $row;
             echo '<pre>'; print_R($row);
         }
     }
    }

【讨论】:

    猜你喜欢
    • 2015-11-25
    • 2016-03-12
    • 2018-06-11
    • 2021-01-19
    • 2015-12-31
    • 2018-12-21
    • 1970-01-01
    • 2017-01-12
    • 2020-04-15
    相关资源
    最近更新 更多