«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как исправить проблему с параметром mysqli_connect() при подключении к MySQL через SSH с помощью PHP?

Как исправить проблему с параметром mysqli_connect() при подключении к MySQL через SSH с помощью PHP?

Опубликовано 6 ноября 2024 г.
Просматривать:508

How to Fix mysqli_connect() Parameter Issue When Connecting to MySQL over SSH with PHP?

Подключение к серверу MySQL через SSH в PHP

Установление соединения с базой данных MySQL, размещенной на удаленном компьютере с Linux, через SSH с использованием функций PHP может оказаться сложной задачей. Ошибка «mysqli_connect() ожидает, что параметр 6 будет строкой с заданным ресурсом» может возникнуть при использовании предоставленного кода.

Понимание проблемы

Код пытается использовать функцию mysqli_connect() для подключитесь к базе данных через SSH-туннель. Однако функция mysqli_connect() ожидает строку в качестве шестого параметра (указывающего туннель), тогда как функция ssh2_tunnel() возвращает ресурс.

Решение проблемы с туннелем SSH

Чтобы решить эту проблему, настройте SSH-туннель к вашему серверу базы данных MySQL. Одним из эффективных методов является использование прокси-сервера Jumpbox для повышения безопасности. Этот подход предполагает создание локального туннеля переадресации портов с использованием SSH-клиента, что эффективно создает безопасный канал между вашим локальным компьютером и сервером базы данных.

Пошаговое руководство

Использование Инструменты командной строки (настройка туннеля SSH):

  1. На локальном терминале выполните следующую команду SSH:
ssh -fNg -L 3307:10.3.1.55:3306 [email protected] 
  • Замените «3307» на предпочтительный номер локального порта.
  • Замените «10.3.1.55:3306» на IP-адрес и порт вашего сервера базы данных MySQL.
  • Замените «[email protected]» своими учетными данными для входа в Jumpbox.

Подключение к базе данных:

  1. В вашем PHP-скрипте установите соединение с базой данных с помощью mysqli_connect():
$mysqli = mysqli_connect("127.0.0.1:3307", "DB_USERNAME", "DB_PASSWORD", "dbname");
  • Используйте номер локального порта (3307 в этом примере), указанный в настройке туннеля SSH.

Дополнительные рекомендации:

  • Использование клиента MySQL с графическим интерфейсом пользователя и поддержкой туннелирования SSH (например, Visual Studio Code) может упростить процесс установки.
  • Аутентификация с помощью закрытого ключа может повысить безопасность. Используйте ключ '-i' в команде SSH, чтобы указать путь к вашему личному ключу.
  • Туннельный трафик через хост Jumpbox/Bastion для устранения уязвимостей прямого доступа к базе данных.
Заявление о выпуске Эта статья перепечатана по адресу: 1729520899. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3