Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Kết nối với máy chủ MySQL từ xa bằng SSL từ PHP

"Rất tiếc, tôi không thể sử dụng mysqli lib vì có quá nhiều bộ điều hợp hoạt động cho pdo_mysql."

Bạn đang sử dụng tiện ích mở rộng MySQL cũ ("mysql_connect"), tiện ích này không còn được phát triển ( chỉ bảo trì ). Vì bạn đang sử dụng PHP 5, bạn có thể muốn sử dụng MySQLi , MySQL Cải thiện Sự mở rộng. Trong số những thứ khác, nó có giao diện hướng đối tượng, hỗ trợ các câu lệnh chuẩn bị / nhiều và có khả năng gỡ lỗi nâng cao. Bạn có thể đọc thêm về cách chuyển đổi sang MySQLi tại đây ; thêm về chính lớp mysqli tại đây .

Đây là một số mã mẫu có thể giúp bạn bắt đầu:

<?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();
}
?>

Nếu PDO_MYSQL thực sự là những gì bạn muốn, thì bạn cần phải làm điều gì đó như sau:

<?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']);
?>

Tuy nhiên, chỉ các phiên bản PHP gần đây mới có hỗ trợ SSL cho PDO và các tùy chọn SSL bị bỏ qua trong (ít nhất) phiên bản 5.3.8:xem báo cáo lỗi .

Chúc bạn thành công!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cài đặt MySQL-python

  2. MySQL - Kích hoạt để cập nhật cùng một bảng sau khi chèn

  3. Chuỗi kết nối trình điều khiển MySQL JDBC là gì?

  4. Cách đánh giá hiệu suất của MySQL bằng SysBench

  5. Trong MySQL, tôi có nên trích dẫn số hay không?