Conexão do banco de dados PHP
-
20-09-2019 - |
Pergunta
Preciso me conectar a um banco de dados MySQL remoto no PHP.
Especificamente, tenho isso como constante: define ("database_server", "localhost"); ...
$db = @mysql_connect(DB_SERVER, DB_USER, DB_PASS);
Quero copiar o site para minha máquina local, mas ainda me conectar ao banco de dados principal.
Posso fazer isso? Se sim, como? Tudo o que tenho é acesso FTP.
Solução
Você precisa do IP/URL do banco de dados e colocar isso em vez de localhost.
Você precisa garantir que a configuração do banco de dados permita conexões remotas/fora da rede local.
Depois de obter o IP do banco de dados (deve ser fornecido pela equipe de suporte, se estiver sendo suportada), você saberá.
Se tudo o que você precisa fazer é copiar os dados e criá -los localmente em sua máquina, para não destruir dados ao vivo, use a guia Exportar no PhpMyadmin. Presumo que você não tenha muitos dados.
Phpmyadmin-> Selecione o db (no quadro esquerdo)-> Pressione a guia Exportar (quadro superior direito).
Deve ficar claro a partir daí.
Você pode exportá -lo como SQL e executar este SQL em sua máquina local.
Outras dicas
Eu acho que seu servidor de banco de dados está recusando conexões remotas. Se você possui cpanel, uma seção é chamada algo como "acesso ao banco de dados remoto", onde você pode permitir que eles sejam certos intervalos de IP.
Eu sugiro que você exporte o banco de dados em questão e o importe localmente. Dessa forma, você não destruirá dados ao vivo se estragar tudo.
Muitos, se não a maioria, os provedores de hospedagem também fornecem uma interface DB como o PHPMyadmin. Você pode exportar o banco de dados a partir daí.
+1 gnud. Você não deve usar o banco de dados de produção para o trabalho de desenvolvimento, mesmo se você poderia Configure -o para ouvir o acesso externo em uma interface pública da Internet (*). Um deslizamento do mouse e você está rabiscendo dados ao vivo importantes. Em vez disso, você deve trabalhar em um servidor de desenvolvimento independente, do qual você pode pressionar as alterações de código para o servidor ao vivo quando estiver trabalhando e testado.
(*: O que é por si só uma má idéia: se as senhas são muito fracas ou você está executando uma versão antiga do MySQL com explorações disponíveis, você será invadido por sondas automatizadas muito rapidamente.)
Você normalmente exportaria o banco de dados do shell usando o mysqldump dbname > dbdump.sql
comando e importe -o para o seu servidor local, colocando -o para mysql dbname < dbdump.sql
. Também pode haver uma interface da Web do MySQL Admin instalada no servidor que você pode usar. Mas se tudo o que você tem é FTP, você realmente não recebeu as ferramentas necessárias para fazer o trabalho de desenvolvimento. Veja se você pode obter um banco de dados vazio ou dummy para testar o site.
(Além disso, o FTP é um negócio desagradável ... realmente neste século você deveria estar usando o SFTP.)
A abordagem mais simples é ter DATABASE_SERVER
ser definido como database
(ou algo igualmente significativo) e coloque uma entrada no arquivo de hosts. Na sua máquina local, isso pode apontar para o endereço remoto, no servidor, isso apontará para 127.0.0.1.
define('DATABASE_SERVER', database);
No arquivo do Windows Your Sites é:
c:\windows\system32\drivers\etc\hosts
com:
database <remote_ip>
Linux:
/etc/hosts
com:
database 127.0.0.1
Nota lateral: o seu banco de dados remoto é um banco de dados de produção? Se sim, você realmente não deveria estar usando o banco de dados remoto para o trabalho de desenvolvimento, a menos que você esteja usando um DB dev separado - mesmo assim, eu não corria o risco de Rogue Dev Queries consumir os recursos remotos do banco de dados.
Atualizar: Doh, perdido, você está limitado ao acesso ao FTP.