Bagaimana untuk Menyambung dengan Selamat ke Pelayan MySQL Jauh melalui SSL dalam PHP?

DDD
Lepaskan: 2024-11-23 22:48:10
asal
718 orang telah melayarinya

How to Securely Connect to a Remote MySQL Server via SSL in PHP?

Menyambung ke Pelayan MySQL Jauh dengan SSL daripada PHP

Apabila cuba mewujudkan sambungan ke pelayan MySQL jauh dengan SSL menggunakan MySQL lama sambungan (mysql_connect), pengguna mungkin menghadapi ralat yang menunjukkan "ralat sambungan SSL." Walaupun mengkonfigurasi parameter SSL yang sesuai dalam my.cnf untuk mendayakan sambungan terminal selamat, sambungan PHP tetap tidak berjaya.

Pertimbangan Versi PHP

Kod yang disediakan menggunakan sambungan MySQL yang sudah lapuk , yang tidak lagi aktif dibangunkan. Sebaliknya, disyorkan untuk menggunakan sambungan MySQLi (Sambungan Peningkatan MySQL) yang menawarkan set ciri yang dipertingkatkan, termasuk:

  • Antara muka berorientasikan objek
  • Sokongan untuk penyataan yang disediakan dan berbilang
  • Penyahpepijatan dipertingkatkan keupayaan

Ketersambungan yang Dipertingkatkan dengan MySQLi

Kod contoh berikut mempamerkan cara menggunakan MySQLi untuk sambungan SSL yang selamat:

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);
Salin selepas log masuk

Alternatif PDO_MYSQL

Walaupun tidak sesuai kerana sokongan SSL terhad dalam versi PHP lama, PDO_MYSQL boleh digunakan untuk sambungan SSL:

$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);
Salin selepas log masuk

Adalah penting untuk ambil perhatian bahawa sokongan SSL dalam PDO untuk versi PHP sebelum 5.3.8 mungkin tidak berfungsi sebagai dijangka.

Sekiranya anda menghadapi isu lanjut, sila rujuk sumber berikut untuk mendapatkan panduan:

  • [Contoh Sambungan SSL MySQLi PHP](https://www.digitalocean.com/community/tutorials/how-to-use-ssl-to-secure-mysql-connections-in -php)
  • [PDO MySQL SSL Konfigurasi](https://stackoverflow.com/questions/30075513/pdo-ssl-connection-fails)

Atas ialah kandungan terperinci Bagaimana untuk Menyambung dengan Selamat ke Pelayan MySQL Jauh melalui SSL dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan