Fórum Ubuntu Linux - PT
Suporte Técnico => Servidores => Tópico iniciado por: Anguz em 26 de Janeiro de 2015, 17:40
-
Boa tarde, meu problema é o seguinte tenho um ubuntu server 14.04 rodando os serviços lamp, a bronca é seguinte quando tento rodar um script php que acessa uma base mysql externa da o seguinte erro.
Can't connect to MySQL server on 'mysql.megacall.com.br' (111)Não foi possível selecionar o banco de dados!
Ps: meu mysql local roda na porta 3308 e o externo roda na 3306.
-
Lembrou de autorizar o acesso no servidor?
-
Lembrou de autorizar o acesso no servidor?
Já testei todo tipo de liberação que consegui na internet, tu tens algo mais especifico?
Ps: tenho outro servidor só que é windows(xamp) e ta rodando o mesmo script sem problemas.
-
Ja liberou o mysql para permitir acesso externo?
aqui tem um exemplo
https://darkstrikerd.wordpress.com/2008/02/14/linux-permitindo-acesso-remoto-num-servidor-mysql/ (https://darkstrikerd.wordpress.com/2008/02/14/linux-permitindo-acesso-remoto-num-servidor-mysql/)
pode mandar o script php que faz a conexão?
-
Ja liberou o mysql para permitir acesso externo?
aqui tem um exemplo
https://darkstrikerd.wordpress.com/2008/02/14/linux-permitindo-acesso-remoto-num-servidor-mysql/ (https://darkstrikerd.wordpress.com/2008/02/14/linux-permitindo-acesso-remoto-num-servidor-mysql/)
pode mandar o script php que faz a conexão?
Já fiz essa liberação, consigo acessar remotamente o mysql que esta no ubuntu server normalmente, o problema está quando tento rodar um script localizado no ubuntu server e a base de dados está nesse caso na kinghosting, ai dá aquele erro que postei.
-
Já testei todo tipo de liberação que consegui na internet, tu tens algo mais especifico?
Isso é vago. O que tentou?
Instale o mysql client e tente conectar do terminal, algo como
mysql --user=Usuário --password=Senha --host=Endereço --port=3306 nome_do_banco
Mostre o resultado.
-
Já testei todo tipo de liberação que consegui na internet, tu tens algo mais especifico?
Isso é vago. O que tentou?
Instale o mysql client e tente conectar do terminal, algo como
mysql --user=Usuário --password=Senha --host=Endereço --port=3306 nome_do_banco
Mostre o resultado.
Segue o retorno.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15946994
Server version: 5.5.40-log Source distribution
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
-
Segue o retorno do php.
[Tue Jan 27 09:21:12.860381 2015] [:error] [pid 3615] [client 177.41.12.235:20265] PHP Warning: mysql_select_db() expects parameter 2 to be resource, boolean given in /var/www/hiscred/higiniza_dem.php on line 20
-
Teu erro parece ser na forma como vc está chamando a função do PHP. Talvez vc deva rever o código e/ou o manual da biblioteca.
Enquanto isso, instale o phpMyAdmin nessa máquina Ubuntu, e tente acessar o banco MySQL remoto com ele, usando o mesmo usuário/banco, pra ajudar a depurar o problema.
-
Você conectou, então o problema tá no script. Versões diferentes do php? Bibliotecas instaladas?
-
Você conectou, então o problema tá no script. Versões diferentes do php? Bibliotecas instaladas?
Esse é um script que eu fiz só pra testar a conexão com banco, segue o erro.
[pid 3939] [client 177.41.12.235:21453] PHP Warning: mysql_connect(): Can't connect to MySQL server on 'mysql.megacall.com.br' (111) in /var/www/hiscred/higeteste.php on line 2[Tue Jan 27 11:18:08.329405 2015] [:error] [pid 3939] [client 177.41.12.235:21453] PHP Warning: mysql_connect(): Can't connect to MySQL server on 'mysql.megacall.com.br' (111) in /var/www/hiscred/higeteste.php on line 2
Segue o código que da o erro acima.
<?php
$link = mysql_connect('www.xxxx.com.br', 'user', 'senha');
if (!$link) {
die('Not connected : ' . mysql_error());
}
// make foo the current db
$db_selected = mysql_select_db('megacall01', $link);
if (!$db_selected) {
die ('Can\'t use megacall01 : ' . mysql_error());
}
?>
-
Tente conectar via telnet ao servidor na linha de comandos, pra saber se não há alguma coisa impedindo a conectividade.
telnet mysql.megacall.com.br 3306
-
Tente conectar via telnet ao servidor na linha de comandos, pra saber se não há alguma coisa impedindo a conectividade.
telnet mysql.megacall.com.br 3306
Retorna:
telnet mysql.megacall.com.br 3306
Trying 177.12.161.24...
Connected to mysql.megacall.com.br.
Escape character is '^]'.
N
5.5.40-logZ▒▒LXSv|*Z▒r*xAzdfUS"MAmysql_native_passwordConnection closed by foreign host.
-
Fora a porta que você não especificou, tem mais algum script rodando com os mesmos parâmetros desse mysql_connect? Se tiver coloque new_link=True.
Nota: prefira o MySQLi ou PDO_MySQL http://php.net/manual/en/function.mysql-connect.php
-
Eu aconselho a fazer comunicação com a classe PDO.
//Constantes para conexão com Servidor
define("PORT","3308");//3306 a padrao
define("DB","database"); //nome do banco de dados
define("END","endereco");//não aconselho a vc publicar seu endereco para acesso externo do mysql como vc publicou. fica a dica.
define("USER","root");//usuario com permissao para acesso externo
define("PASS","senha");//senha
/*Cria conexão*/
function getConexao(){
$conn = new PDO( 'mysql:host='.END.';port='.PORT.';dbname='.DB.';charset=utf8',USER,PASS);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $conn;
}
aqui segue um link com um bom tutorial
http://www.devmedia.com.br/como-conectar-mysql-com-php-via-pdo/30317 (http://www.devmedia.com.br/como-conectar-mysql-com-php-via-pdo/30317)
Eu faço assim.
-
Fora a porta que você não especificou, tem mais algum script rodando com os mesmos parâmetros desse mysql_connect? Se tiver coloque new_link=True.
Nota: prefira o MySQLi ou PDO_MySQL http://php.net/manual/en/function.mysql-connect.php
Esse script é único, ta rodando solo.
-
Você rodou o comando mysql no linux né? E as informações são iguais as do script? Se sim dá pra conectar do Ubuntu com os parâmetros especificados, e o mais provável é que o problema esteja do lado do script, como instalou o php?
Obs: prefira a tag code, no lugar do negrito, pra destacar códigos/comandos.
----
Do prompt "mysql>" você pode digitar sql válido, por ex. "show tables;" pra mostrar as tabelas de um bd.
-
Eu aconselho a fazer comunicação com a classe PDO.
//Constantes para conexão com Servidor
define("PORT","3308");//3306 a padrao
define("DB","database"); //nome do banco de dados
define("END","endereco");//não aconselho a vc publicar seu endereco para acesso externo do mysql como vc publicou. fica a dica.
define("USER","root");//usuario com permissao para acesso externo
define("PASS","senha");//senha
/*Cria conexão*/
function getConexao(){
$conn = new PDO( 'mysql:host='.END.';port='.PORT.';dbname='.DB.';charset=utf8',USER,PASS);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $conn;
}
aqui segue um link com um bom tutorial
http://www.devmedia.com.br/como-conectar-mysql-com-php-via-pdo/30317 (http://www.devmedia.com.br/como-conectar-mysql-com-php-via-pdo/30317)
Eu faço assim.
Qual deveria ser o retorno? Aqui não ta retornando nada nem no log de erro.
-
Você rodou o comando mysql no linux né? E as informações são iguais as do script? Se sim dá pra conectar do Ubuntu com os parâmetros especificados, e o mais provável é que o problema esteja do lado do script, como instalou o php?
Obs: prefira a tag code, no lugar do negrito, pra destacar códigos/comandos.
----
Do prompt "mysql>" você pode digitar sql válido, por ex. "show tables;" pra mostrar as tabelas de um bd.
Sim rodei o comando do linux, por sinal pelo mysql-client(ubuntu) conecta na base kinghost normal, agora via script não ta indo.
Ps: Instalei o lamp(php) automático quando tava instalando o ubuntu. Pode ser alguma configuração do php?
-
O mais provável é que o erro esteja no seu código, depois qualquer outra coisa que seja necessária pra rodá-lo, que não seja usado pelo cliente do mysql.
-
O mais provável é que o erro esteja no seu código, depois qualquer outra coisa que seja necessária pra rodá-lo, que não seja usado pelo cliente do mysql.
Acho improvável o mesmo código roda perfeitamente em um server windows.
Ps: Você achou algum erro no código que postei?
-
Acho improvável o mesmo código roda perfeitamente em um server windows.
Ps: Você achou algum erro no código que postei?
Fora o que já falei, não. E rodar no windows não descarta nada, porque eu as duas máquinas não estão iguais (for issso).
-
Eu aconselho a fazer comunicação com a classe PDO.
//Constantes para conexão com Servidor
define("PORT","3308");//3306 a padrao
define("DB","database"); //nome do banco de dados
define("END","endereco");//não aconselho a vc publicar seu endereco para acesso externo do mysql como vc publicou. fica a dica.
define("USER","root");//usuario com permissao para acesso externo
define("PASS","senha");//senha
/*Cria conexão*/
function getConexao(){
$conn = new PDO( 'mysql:host='.END.';port='.PORT.';dbname='.DB.';charset=utf8',USER,PASS);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $conn;
}
aqui segue um link com um bom tutorial
http://www.devmedia.com.br/como-conectar-mysql-com-php-via-pdo/30317 (http://www.devmedia.com.br/como-conectar-mysql-com-php-via-pdo/30317)
Eu faço assim.
Qual deveria ser o retorno? Aqui não ta retornando nada nem no log de erro.
vc precisa de um try catch, para o erro aparecer o erro. Voce precisa fazer uma comunicação com o banco.
um exemplo.
try{
$conn = getConexao();
$sql="SELECT id FROM suatabela";
$result = $conn->query($sql);
while($row=$result->fetch(PDO::FETCH_OBJ){
echo $row->id.'<br>';
}
}catch(PDOException $e){
echo "Erro: ".$e.getMessage();
}
-
Gente obrigado pela ajuda, consegui descobrir o que estava acontecendo, simplesmente no meu arquivo php.ini estava com
mysql.default_port = 3308
e
mysql.default_socket = (estava setado para meu mysql socket local)
Só foi deixar em branco que resolveu.