Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Menyambung ke Pelayan MySQL Melalui SSH dalam PHP: Penyelesaian Masalah dan Amalan Terbaik

Cara Menyambung ke Pelayan MySQL Melalui SSH dalam PHP: Penyelesaian Masalah dan Amalan Terbaik

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-21 22:30:30616semak imbas

How to Connect to a MySQL Server Over SSH in PHP: Troubleshooting and Best Practices

Sambung ke Pelayan MySQL Melalui SSH dalam PHP

Gambaran Keseluruhan

Menyambung ke pelayan MySQL jauh melalui SSH memerlukan mewujudkan terowong selamat antara setempat anda mesin dan pelayan pangkalan data MySQL. Panduan ini menggariskan langkah-langkah yang terlibat dalam menyediakan terowong SSH dan menyambung ke pangkalan data menggunakan PHP.

Resolusi Ralat

Ralat "mysqli_connect() menjangkakan parameter 6 sebagai rentetan, sumber diberikan" berlaku apabila parameter keenam mysqli_connect() bukan rentetan yang mewakili terowong MySQL. Untuk menyelesaikan isu ini, tukar parameter keenam menjadi output fungsi ssh2_tunnel, seperti yang ditunjukkan di bawah:

<code class="php">$connection = ssh2_connect('SERVER IP', 22);

ssh2_auth_password($connection, 'username', 'password');

$tunnel = ssh2_tunnel($connection, 'DESTINATION IP', 3307);

$db = mysqli_connect('127.0.0.1', 'DB_USERNAME', 'DB_PASSWORD', 
                         'dbname', 3307, stream_get_contents($tunnel))
    or die ('Fail: '.mysql_error());</code>

Secure Port Forwarding

Penyelesaian yang disyorkan untuk menyambung ke pelayan MySQL melalui SSH adalah untuk mewujudkan terowong SSH. Berikut ialah dua pilihan untuk menyediakan terowong:

Alat GUI

Gunakan klien MySQL GUI seperti Visual Studio Code atau TablePlus yang menawarkan sokongan terowong SSH terbina dalam.

Arahan Line

Sediakan pemajuan port tempatan menggunakan arahan berikut:

<code class="bash">ssh -fNg -L 3307:10.3.1.55:3306 [email&#160;protected] </code>

Setelah terowong ditubuhkan, sambung ke pelayan MySQL melalui port tempatan (3307) dalam skrip PHP anda:

<code class="php"><?php
      $smysql = mysql_connect( &quot;127.0.0.1:3307&quot;, &quot;dbuser&quot;, &quot;passphrase&quot; );
      mysql_select_db( &quot;db&quot;, $smysql ); 
?></code>

Pertimbangan Keselamatan

Adalah penting untuk mewujudkan terowong melalui pelayan jumpbox untuk mengelakkan daripada mendedahkan pelayan pangkalan data anda terus ke Internet. Selain itu, pertimbangkan untuk menggunakan pengesahan kunci SSH dan bukannya pengesahan kata laluan untuk keselamatan yang dipertingkatkan.

Atas ialah kandungan terperinci Cara Menyambung ke Pelayan MySQL Melalui SSH dalam PHP: Penyelesaian Masalah dan Amalan Terbaik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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