我在远程服务器上托管了一个MySQL数据库,该数据库仅接受SSL连接。当我使用带有SSL选项的Java JDBC连接到该数据库时,它可以正常工作。我有一个用于JDBC连接的特殊jdbc字符串,如下所示
“ jdbc:mysql://:/?verifyServerCertificate = false&useSSL = true&requireSSL = true”

我需要使用ADODB库通过PHP使用类似的连接。

我在网上发现了一些有关使用ADODB mysqli扩展的参考



(参考http://mbrisby.blogspot.com/2008/06/adodb-php-mysql-ssl.html

创建CA证书(我们将其称为/path/to/ca-cert.pem)后,请确保以下各项位于/etc/my.cnf的[client]节中或连接用户的〜/中客户端主机上的.my.cnf:

ssl-ca = /路径/到/ca-cert.pem

然后尝试以下PHP程序:

//这些是AdoDB库的一部分
要求'/path/to/adodb-exceptions.inc.php';
要求'/path/to/adodb.inc.php';

/ *
*我从跑步中获得了“ 2048”
* printf(“%d \ n”,MYSQLI_CLIENT_SSL)
*在PHP程序中(已安装mysqli扩展)
* /
$ dsn ='mysqli:// ssluser:sslpass @ dbhost / test?clientflags = 2048';

$ dbh = NewADOConnection($ dsn);

$ sql =“显示状态,如“ ssl_cipher””;
$ res =&$ dbh-> Execute($ sql);
print_r($ res-> fields);
$ res-> Close();

$ dbh-> Close();





如果要从其他计算机连接到此mysql数据库,是否需要证书信息?

是否有类似于PHP的JDBC字符串的内容?

如果有人可以发布工作示例,那将是很好的

谢谢

最佳答案

我没有将MySQL与SSL连接的经验。 MySQL驱动程序具有flagsMYSQL_CLIENT_SSL),可在连接时使用。

要在使用AdoDB连接时进行设置,可以尝试使用我的连接模板:

$options = '';
if ($driver == 'mysql' OR $driver == 'mysqli')
{
  if ($params['pconnect'] === TRUE)
  {
    $options .= '?persist';
  }
  $flags = MYSQL_CLIENT_COMPRESS;
  if ($params['ssl'] === TRUE)
  {
    $flags = $flags | MYSQL_CLIENT_SSL;
  }
  $options .= (empty($options)?'?':'&')."clientflags=$flags";
}

$dsn = "{$driver}://{$username}:{$password}@{$hostname}/{$database}{$options}";

$adodb =& ADONewConnection($dsn);

if ($adodb)
{
  //set fetch mode
  $adodb->SetFetchMode(ADODB_FETCH_BOTH);

  //character set
  if ($driver == 'mysql' OR $driver == 'mysqli')
  {
    if (isset($params['char_set']) AND $params['char_set']
        AND isset($params['dbcollat']) AND $params['dbcollat'])
    {
      $charset    = $adodb->qstr($params['char_set']);
      $collation  = $adodb->qstr($params['dbcollat']);
      $adodb->Execute("SET NAMES $charset COLLATE $collation");
    }
  }
  if ($debug)
  {
    @ob_start();
    $adodb->debug = TRUE;
  }
}

关于php - 通过ADODB库的MySQL SSL连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1141040/

10-14 15:02
查看更多