Fórum Ubuntu Linux - PT

Suporte Técnico => Servidores => Tópico iniciado por: Anguz em 26 de Janeiro de 2015, 17:40

Título: LAMP Acesso local e Externo
Enviado 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.
Título: Re: LAMP Acesso local e Externo
Enviado por: zekkerj em 26 de Janeiro de 2015, 17:44
Lembrou de autorizar o acesso no servidor?
Título: Re: LAMP Acesso local e Externo
Enviado por: Anguz em 26 de Janeiro de 2015, 17:55
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.
Título: Re: LAMP Acesso local e Externo
Enviado por: JuarezFranco em 26 de Janeiro de 2015, 18:10
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?
Título: Re: LAMP Acesso local e Externo
Enviado por: Anguz em 26 de Janeiro de 2015, 18:22
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.
Título: Re: LAMP Acesso local e Externo
Enviado por: irtigor em 26 de Janeiro de 2015, 18:32
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
Código: [Selecionar]
mysql --user=Usuário --password=Senha --host=Endereço --port=3306 nome_do_banco

Mostre o resultado.
Título: Re: LAMP Acesso local e Externo
Enviado por: Anguz em 27 de Janeiro de 2015, 09:33
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
Código: [Selecionar]
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>
Título: Re: LAMP Acesso local e Externo
Enviado por: Anguz em 27 de Janeiro de 2015, 10:24
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
Título: Re: LAMP Acesso local e Externo
Enviado por: zekkerj em 27 de Janeiro de 2015, 12:44
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.
Título: Re: LAMP Acesso local e Externo
Enviado por: irtigor em 27 de Janeiro de 2015, 14:13
Você conectou, então o problema tá no script. Versões diferentes do php? Bibliotecas instaladas?
Título: Re: LAMP Acesso local e Externo
Enviado por: Anguz em 27 de Janeiro de 2015, 15:06
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());
}
?>



Título: Re: LAMP Acesso local e Externo
Enviado por: zekkerj em 27 de Janeiro de 2015, 15:18
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
Título: Re: LAMP Acesso local e Externo
Enviado por: Anguz em 27 de Janeiro de 2015, 15:33
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.
Título: Re: LAMP Acesso local e Externo
Enviado por: irtigor em 27 de Janeiro de 2015, 16:25
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
Título: Re: LAMP Acesso local e Externo
Enviado por: JuarezFranco em 27 de Janeiro de 2015, 18:16
Eu aconselho a fazer comunicação com a classe PDO.

Código: [Selecionar]
//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.
Título: Re: LAMP Acesso local e Externo
Enviado por: Anguz em 27 de Janeiro de 2015, 19:55
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.
Título: Re: LAMP Acesso local e Externo
Enviado por: irtigor em 27 de Janeiro de 2015, 20:24
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.
Título: Re: LAMP Acesso local e Externo
Enviado por: Anguz em 28 de Janeiro de 2015, 14:43
Eu aconselho a fazer comunicação com a classe PDO.

Código: [Selecionar]
//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.
Título: Re: LAMP Acesso local e Externo
Enviado por: Anguz em 28 de Janeiro de 2015, 16:31
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?
Título: Re: LAMP Acesso local e Externo
Enviado por: irtigor em 28 de Janeiro de 2015, 19:12
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.
Título: Re: LAMP Acesso local e Externo
Enviado por: Anguz em 29 de Janeiro de 2015, 15:36
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?
Título: Re: LAMP Acesso local e Externo
Enviado por: irtigor em 29 de Janeiro de 2015, 15:43
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).
Título: Re: LAMP Acesso local e Externo
Enviado por: JuarezFranco em 29 de Janeiro de 2015, 15:47
Eu aconselho a fazer comunicação com a classe PDO.

Código: [Selecionar]
//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.
Código: [Selecionar]
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();
}
Título: Re: LAMP Acesso local e Externo
Enviado por: Anguz em 29 de Janeiro de 2015, 16:10
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.