Mysql
 sql >> база данни >  >> RDS >> Mysql

Свържете се с отдалечен MySQL сървър с SSL от PHP

"За съжаление не мога да използвам mysqli lib, защото имам твърде много работещи адаптери за pdo_mysql."

Използвате старото разширение MySQL ("mysql_connect"), което вече не е в процес на разработка (само поддръжка ). Тъй като използвате PHP 5, може да искате да използвате MySQLi , MySQL Подобрен Удължаване. Освен всичко друго, той има обектно-ориентиран интерфейс, поддръжка за подготвени/множествени оператори и има подобрени възможности за отстраняване на грешки. Можете да прочетете повече за конвертирането в MySQLi тук ; повече за самия клас mysqli тук .

Ето малко примерен код, който може да ви помогне да започнете:

<?php
ini_set ('error_reporting', E_ALL);
ini_set ('display_errors', '1');
error_reporting (E_ALL|E_STRICT);

$db = mysqli_init();
mysqli_options ($db, MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);

$db->ssl_set('/etc/mysql/ssl/client-key.pem', '/etc/mysql/ssl/client-cert.pem', '/etc/mysql/ssl/ca-cert.pem', NULL, NULL);
$link = mysqli_real_connect ($db, 'ip', 'user', 'pass', 'db', 3306, NULL, MYSQLI_CLIENT_SSL);
if (!$link)
{
    die ('Connect error (' . mysqli_connect_errno() . '): ' . mysqli_connect_error() . "\n");
} else {
    $res = $db->query('SHOW TABLES;');
    print_r ($res);
    $db->close();
}
?>

Ако PDO_MYSQL е наистина това, което искате, тогава трябва да направите нещо подобно:

<?php
$pdo = new PDO('mysql:host=ip;dbname=db', 'user', 'pass', array(
    PDO::MYSQL_ATTR_SSL_KEY    =>'/etc/mysql/ssl/client-key.pem',
    PDO::MYSQL_ATTR_SSL_CERT=>'/etc/mysql/ssl/client-cert.pem',
    PDO::MYSQL_ATTR_SSL_CA    =>'/etc/mysql/ssl/ca-cert.pem'
    )
);
$statement = $pdo->query("SHOW TABLES;");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);
?>

Само последните версии на PHP обаче имат SSL поддръжка за PDO и опциите за SSL се игнорират безшумно в (поне) версия 5.3.8:вижте доклад за грешка .

Успех!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Получаване на новия идентификатор на първичен ключ на запис от MySQL заявка за вмъкване?

  2. Получавате имена на колони на таблицата в MySQL?

  3. mysql транзакция - връщане назад при всяко изключение

  4. Грешка в MySQL/PHP:[2002] Само едно използване на всеки адрес на сокет (протокол/мрежов адрес/порт) обикновено е разрешено

  5. Как мога да задам стойността по подразбиране на колона с клеймо за дата на текущото време с миграции на Laravel?