我试图连接到我的SQL数据库,它是,当然是通过SSL,因为它通过互联网。使用凭据和客户端证书通过Datagrip连接工作。
我尝试过来自互联网的多个密码,但似乎不起作用。
我的代码:
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的行。
我试过这些选项的代码:
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没有被强制执行。这个也不起作用,现在错误出现了:糟糕的网关
发布于 2022-08-06 15:53:28
我找到了解决方案,证书存储在一个字符串中。字符串不能持有证书。所以我得换个方法。谢谢你的帮助。
https://stackoverflow.com/questions/73260865
复制相似问题