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.
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>
Penyelesaian yang disyorkan untuk menyambung ke pelayan MySQL melalui SSH adalah untuk mewujudkan terowong SSH. Berikut ialah dua pilihan untuk menyediakan terowong:
Gunakan klien MySQL GUI seperti Visual Studio Code atau TablePlus yang menawarkan sokongan terowong SSH terbina dalam.
Sediakan pemajuan port tempatan menggunakan arahan berikut:
<code class="bash">ssh -fNg -L 3307:10.3.1.55:3306 [email protected] </code>
Setelah terowong ditubuhkan, sambung ke pelayan MySQL melalui port tempatan (3307) dalam skrip PHP anda:
<code class="php"><?php $smysql = mysql_connect( "127.0.0.1:3307", "dbuser", "passphrase" ); mysql_select_db( "db", $smysql ); ?></code>
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!