"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como corrigir problema de parâmetro mysqli_connect() ao conectar ao MySQL via SSH com PHP?

Como corrigir problema de parâmetro mysqli_connect() ao conectar ao MySQL via SSH com PHP?

Publicado em 2024-11-06
Navegar:898

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

Conecte-se a um servidor MySQL por SSH em PHP

Estabelecer uma conexão com um banco de dados MySQL hospedado em uma máquina Linux remota via SSH usando funções PHP pode ser um desafio. O erro "mysqli_connect() espera que o parâmetro 6 seja string, recurso fornecido" pode ocorrer ao usar o código fornecido.

Compreendendo o problema

O código tenta usar a função mysqli_connect() para conecte-se ao banco de dados por meio de um túnel SSH. No entanto, a função mysqli_connect() espera uma string como o sexto parâmetro (indicando o túnel), enquanto a função ssh2_tunnel() retorna um recurso.

Resolvendo o problema com o túnel SSH

Para resolver esse problema, configure um túnel SSH para seu servidor de banco de dados MySQL. Um método eficaz é usar um proxy Jumpbox para melhorias de segurança. Essa abordagem envolve a criação de um túnel de encaminhamento de porta local usando o cliente SSH, criando efetivamente um canal seguro entre sua máquina local e o servidor de banco de dados.

Guia passo a passo

Usando Ferramentas de linha de comando (configuração do túnel SSH):

  1. No seu terminal local, execute o seguinte comando SSH:
ssh -fNg -L 3307:10.3.1.55:3306 [email protected] 
  • Substitua '3307' pelo número da porta local de sua preferência.
  • Substitua '10.3.1.55:3306' pelo endereço IP e porta do seu servidor de banco de dados MySQL.
  • Substitua '[email protected]' pelas suas credenciais de login do Jumpbox.

Conectando ao banco de dados:

  1. Em seu script PHP, estabeleça a conexão com o banco de dados usando mysqli_connect():
$mysqli = mysqli_connect("127.0.0.1:3307", "DB_USERNAME", "DB_PASSWORD", "dbname");
  • Use o número da porta local (3307 neste exemplo) especificado na configuração do túnel SSH.

Considerações adicionais:

  • Usar um cliente GUI MySQL com suporte a tunelamento SSH (por exemplo, Visual Studio Code) pode simplificar o processo de configuração.
  • A autenticação de chave privada pode melhorar a segurança. Use a opção '-i' no comando SSH para especificar o caminho da chave privada.
  • Túnel de tráfego por meio de um Jumpbox/Bastion Host para mitigar vulnerabilidades de acesso direto ao banco de dados.
Declaração de lançamento Este artigo foi reimpresso em: 1729520899 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3