Acesse o banco de dados via PHP de fora do servidor

0

Eu tenho um VPS executando apache e mysql servidores. Basicamente, estou atualizando meu banco de dados do site que também está hospedado no mesmo servidor, é por isso que quando estou me conectando ao banco de dados via os arquivos PHP estou usando 127.0.0.1 para fazer a conexão e posso conectar e inserir linhas com sucesso.

No entanto, recentemente, tentei conectar e inserir linhas no meu banco de dados por meio de um script php que está fora do servidor e reside em um VPS diferente e recebi o seguinte erro. ( ! ) Warning: mysql_query(): Access denied for user ''@'localhost' (using password: NO) in C:\wamp64\www\test.php on line 13

Eu quero que o meu servidor mySql aceite conexões de fora do host local também.

    
por tony9099 18.09.2017 / 09:07

1 resposta

2

Você pode conceder ao usuário todos os privilégios necessários usando o seguinte comando:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'
IDENTIFIED BY 'your_pass'
WITH GRANT OPTION;
FLUSH PRIVILEGES;'

% significa todos os hosts, para que o usuário especificado possa acessar o banco de dados a partir de qualquer endereço IP. Você pode especificar seu próprio endereço IP se tiver o seu próprio.

Não se esqueça de adicionar uma exceção ao firewall no seu VPS, se você tiver um. Se você usar ufw , poderá executar o seguinte:

sudo ufw allow 3306/tcp
sudo service ufw restart

Então, finalmente, não se esqueça de editar my.cnf no seu sistema, que é o lugar em /etc/mysql/my.cnf se você usar o Ubuntu. abra o arquivo usando seu editor de texto favorito: por exemplo, nano: sudo nano /etc/mysql/my.cnf em seguida, adicione o seguinte:

[mysqld] 
bind-address= your-server-ip-address
#skip-networking

Salve o arquivo e saia. Não esqueça então de correr sudo systemctl restart mysql

Você pode testar seu trabalho usando este script php

<?php
$dbname = 'dbname';
$dbuser = 'db_user';
$dbpass = 'db_pass';
$dbhost = 'your-server-ip-address';

try {
   $connection = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, 
   $dbpass);

 $connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   echo "Connected successfully"; 
 }
catch(PDOException $e)
   {
     echo "Connection failed: " . $e->getMessage();
   }
    
por Peshmerge 18.09.2017 / 12:27