首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SSL连接到MYSQL8.0的PHP8.0

使用SSL连接到MYSQL8.0的PHP8.0
EN

Stack Overflow用户
提问于 2022-08-06 15:02:04
回答 1查看 61关注 0票数 0

我试图连接到我的SQL数据库,它是,当然是通过SSL,因为它通过互联网。使用凭据和客户端证书通过Datagrip连接工作。

我尝试过来自互联网的多个密码,但似乎不起作用。

我的代码:

代码语言:javascript
复制
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', '1');
error_reporting (E_ALL|E_STRICT);
try {
    $mysqli = mysqli_init();
    if (!$mysqli) {
        die("mysqli_init failed");
    }

    $mysqli->ssl_set($key,$certificate,$ca,null,null);
    if(!$mysqli->real_connect(  "<server>",
                                "<username>",
                                "<password>",
                                "<database>",
                                3306,
                                NULL,
                                MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT
                                ));

    return $mysqli;
} catch (mysqli_sql_exception $e) {
    $DatabaseAvailable = false;
    echo $e;
}
if (!$DatabaseAvailable) {
    ?><h1>Connection failed</h1><?php
    die();
}

我得到错误: mysqli_sql_exception:拒绝用户访问(使用密码:是)

我不熟悉PDO,我试过了,但它不起作用。

更新

堆栈跟踪到第87行,女巫是带有标志MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT的行。

我试过这些选项的代码:

代码语言:javascript
复制
ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', '1');
error_reporting (E_ALL|E_STRICT);
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
    $mysqli = mysqli_init(); if (!$mysqli) {die("mysqli_init failed");}
    mysqli_options ($mysqli, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);
    $mysqli->ssl_set($key,$certificate,$ca,NULL,NULL);
    $mysqli->real_connect(  "<server>",
                                "<username>",
                                "<password>",
                                "<database>",
                                3306,
                                NULL,
                                MYSQLI_CLIENT_SSL);

    return $mysqli;
} catch (mysqli_sql_exception $e) {
    ?><h1>Connection failed</h1><?php
    echo $e;
}

因为我认为,在第一个版本中,SSL没有被强制执行。这个也不起作用,现在错误出现了:糟糕的网关

EN

回答 1

Stack Overflow用户

发布于 2022-08-06 15:53:28

我找到了解决方案,证书存储在一个字符串中。字符串不能持有证书。所以我得换个方法。谢谢你的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73260865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档