Ir para conteúdo
Carcleo

conexão remota não funciona. Só local

Recommended Posts

Estou recebendo esse erro do servidor ao tentar conectar via PDO com o mysql no link abaixo

http://funerariasaopedro.net.br/crud/   

 

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2002] 
    Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)' 
    in /var/www/html/funerariasaopedro.net.br/web/crud/_conexao/Conexao.php:33 
    Stack trace: #0 /var/www/html/funerariasaopedro.net.br/web/crud/_conexao/Conexao.php(33): 
    PDO->__construct('mysql:?????????...', 'carcleo', 'teste') 
    #1 /var/www/html/funerariasaopedro.net.br/web/crud/cadastraPlanos.php(9): CONEXAO\Conexao->__construct() 
    #2 /var/www/html/funerariasaopedro.net.br/web/crud/index.php(27): require_once('/var/www/html/f...') 
    #3 {main} thrown in /var/www/html/funerariasaopedro.net.br/web/crud/_conexao/Conexao.php on line 33

Classe de conexão:

    <?php
      
      namespace CONEXAO;
      
      use PDO; 
       
      class Conexao {
          
          private static $conexao;

          private static $hostname     = "server";     
          private static $port         = 3306; 
          private static $dbname       = "db";
          private static $username     = "user";
          private static $password     = "senha";

          
          public function __construct() {
            
            if (isset(self::$conexao))         {
             
                self::$conexao = self::$conexao;
                
            }  else {        
    
              
              try {
    
                 self::$conexao = new PDO('mysql:
                             host='.self::$hostname.';
                             port= '.self::$port.';
                             dbname='.self::$dbname, 
                             self::$username, 
                             self::$password
                                         );
    
              } catch (Exception $e) {
    
                self::$conexao = NULL;
    
                echo $e->getMessage();
    
              } 
    
            }
              
          }
          
          public function abreConexao() {
              
              return self::$conexao;
              
          }
    
        
          public function fechaConexao () {
              
              if (self::$conexao != null) {
                  
                  self::$conexao = null;
                  
              }
    
          }      
    
      }

O que pode ser isso?

Obs.: O mesmo código localmente funciona e os dados de conexão estão corretos no servidor.

As senhas do servidor já foram testadas ok.

 

A classe abaixo, com os mesmos dados, funciona:

<?php
 
 class Conexao {
   
    private $host     = "server";     
    private $user     = "user";
    private $password = "senha";
    private $db       = "db";
   
    
    private $conexao;
    
    public function abreConexao() {
        
        if (isset($this->conexao))         {
         
            return $this->conexao;
            
        }  else {        

                $this->conexao = new mysqli($this->host, $this->user, $this->password, $this->db);

                $this->conexao->set_charset("utf8");    

                return $this->conexao;
        }

    }
    
    public function fechaConexao () {
        
        if ($this->conexao != null) {
            
            $this->conexao = null;
            
        }
    }

  }

?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porta 3306 geralmente é usada por 127.0.0.1 por isso funciona local, mas quando hospeda a porta de acesso não é essa, daí o erro.

Tente remover a porta, pois PDO vai usar a padrão (caso liberada para acesso público), do contrário você vai ter que especificar a porta do socket do banco de dados.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sem a porta eu já tentei e deu erro também.
Vou contatar o servidor do UOL HOST e ver como eles qual a porta que eles usam

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valide se o socket existe no caminho informado:

/var/lib/mysql/mysql.sock

Caso ele não existir, procure o arquivo no servidor e altere o php.ini para o local correto.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia já tentou Verifique o endereço do server, usuário e senha e Certifique-se de estar executando o

mysqld: /etc/init.d/mysqld start

 

1°Solucao

Se o seu arquivo my.cnf (normalmente na pasta / etc / mysql /) estiver corretamente configurado

socket = / var / lib / mysql / mysql.sock


você pode verificar se o mysql está rodando com o seguinte comando:

mysqladmin -u root -p status


tente mudar sua permissão para a pasta mysql. Se você estiver trabalhando localmente, poderá tentar:

sudo chmod -R 755 / var / lib / mysql /

 

2°Solução

renomear o arquivo existente para um nome qualquer exemplo

 

mv /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock.bak

e Novamente Reniciar

/etc/init.d/mysqld restart

3° Solução

Faça a seguintes modificações

sudo gksu gedit /etc/mysql/my.cnf


modificado

# bind-address = 127.0.0.1


para

bind-address = localhost


e reiniciado

sudo /etc/init.d/mysql restart

 

4° Solução

Tente o seguinte Comando

mysql -h 127.0.0.1 -P 3306 -u root -p

 

-h significa host e -p significa porta.


 

Compartilhar este post


Link para o post
Compartilhar em outros sites

mesmo assim não dá certo. Lembrando que sem PDO funciona normalmente.

 

Isto é:  new mysqli(...)

 

]com os mesmos dados de coeexao.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É a porta, com certeza.

Testa aí para você ver se não é a porta...

Connect.php

Spoiler

<?php
class Connect {
    private static $host = 'host';
    private static $user = 'login';
    private static $pass = 'senha';
    private static $data = 'database';
    private static $isConnect = null;

    private static function makeConnect() {
        try {
            if (self::$isConnect == null) {
                $dsn = 'mysql:host=' . self::$host . '; dbname=' . self::$data;
                $options = [PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8'];
                self::$isConnect = new PDO($dsn, self::$user, self::$pass, $options);
            }
        } catch (PDOException $error) {
            die("<br>Não foi possível conectar com o banco de dados!<br> Descrição: {$error->getMessage()}<br>");
        }
        self::$isConnect->SetAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return self::$isConnect;
    }

    public function callConnect() {
        return self::makeConnect();
    }
}

 

 

Testando

Spoiler

<?php
require ('Connect.php');

var_dump(Connect::callConnect());

 

 

Se o host/login/pass/db estiverem corretos o resultado será object(PDO)#1 (0) { }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz a conexão PDO com mysql conforme abaixo  baseado no teu código:

     $dsn = 'mysql:host=' . self::$hostname . '; dbname=' . self::$dbname;
     $opcoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8');
    
     self::$conexao = new PDO( 
                      $dsn,
                      self::$username, 
                      self::$password, 
                      $opcoes
                              );

que funciona perfeitamente.

 

Mas se eu colocar o conteúdo da variável $dsn junto à string de conexão conforme abaixo dá erro que me parece ser de concatenação.

 

   Por favor me ajuda a descobrir onde está esse erro?

    $opcoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8');
    
     self::$conexao = new PDO( "mysql:
                      host=" . self::$hostname . "; 
                      dbname=" . self::$dbname,
                      self::$username, 
                      self::$password, 
                      $opcoes
                              );

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro estava em que na variável que abriga o DSN NÃO pode haver quebras de linha.

 

Soução:

new PDO( "mysql:host=".self::$hostname.";dbname=". self::$dbname, self::$username, self::$password, $opcoes);
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por cesaroet
      Galera, estou com o seguinte problema:
      tenho 4 redirecionamento, até a 2 funciona normal, mas a partir da 3 redireciona para o menu.php novamente.
      alguem tem uma dica?
      <?php session_start(); if(!isset($_SESSION['usuario']) /*|| ($_SESSION['nivel']) */){ session_destroy(); header("location:menu.php"); exit; } if($_SESSION['nivel'] == '1'){ header("location:checklist_gabriel/index.php"); } if($_SESSION['nivel'] == '2'){ header("location:checklist/index.php"); } if($_SESSION['nivel'] == '3'){ header("location:conferencia/controle/"); } if($_SESSION['nivel'] == '4'){ header("location:controle/index.php"); } ?>  
    • Por leo_santo1
      Venho por meio desse post procurar ajuda com meu código!
      Estou fazendo um código usando `DataTable` , sou iniciante na programação, depois de umas pesquisas e até mesmo algumas dicas conseguir construir uma DataTable com banco de dados.
      Continuando minhas pesquisas para aprimorar mais ainda o código, percebi que a  `DataTable` possuir varias funções interessantes, umas delas em especifico chamou bastante minha atenção e até me ajudaria no código que no caso é o uso de Linhas filhas ocultas, que quando fazemos o click em cima de um botão aparece as informações extras da linha ( no caso os dados a mais do banco ) e ao apertar ela novamente ele oculta as informações.
      Gostaria de ajuda para criar essa função na minha Tabela, já realizei pesquisas no próprio site da  `DataTable` , aqui, porem não entendo bem o jeito que eles explicam.
      segue abaixo meu código da table e da  `DataTable` que conecta com o Banco.
       
      Tabela
      <table id="employee-grid" cellpadding="0" cellspacing="0" border="0" class="display" width="100%"> <thead> <tr> <th>Nome</th> <th>CPF</th> <th>Data de Nascimento</th> <th></th> <th>Ação</th> <th></th> </tr> </thead> <thead> <tr> <td><input type="text" data-column="0" class="search-input-text" style="width: 150px;"></td> <th><input type="text" data-column="1" class="search-input-text" style="width: 150px;"></td> <th><input type="text" id="data" data-column="2" class="search-input-text" style="width: 150px;"></th> <th></th> <td> </td> <td></td> </tr> </thead> </table> Script DataTable
      $(document).ready(function() { var dataTable = $('#employee-grid').DataTable( { "processing": true, "serverSide": true, "bJQueryUI": true, "oLanguage": { "sProcessing": "Processando...", "sLengthMenu": "Mostrar _MENU_ registros", "sZeroRecords": "Não foram encontrados resultados", "sInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registros", "sInfoEmpty": "Mostrando de 0 até 0 de 0 registros", "sInfoFiltered": "", "sInfoPostFix": "", "sSearch": "Buscar:", "sUrl": "", "oPaginate": { "sFirst": "Primeiro", "sPrevious": "Anterior", "sNext": "Seguinte", "sLast": "Último" } }, "ajax":{ url :"../Tabelas/Tabela_consulta_cliente.php", // json datasource type: "post", // method , by default get error: function(){ // error handling $(".employee-grid-error").html(""); $("#employee-grid").append('<tbody class="employee-grid-error"><tr><th colspan="3">No data found in the server</th></tr></tbody>'); $("#employee-grid_processing").css("display","none"); } } } ); $("#employee-grid_filter").css("display","none"); // hiding global search box $('.search-input-text').on( 'keyup click', function () { // for text boxes var i =$(this).attr('data-column'); // getting column index var v =$(this).val(); // getting search input value dataTable.columns(i).search(v).draw(); } ); $('.search-input-select').on( 'change', function () { // for select box var i =$(this).attr('data-column'); var v =$(this).val(); dataTable.columns(i).search(v).draw(); } ); } ); Conexão DataTable com o Banco de dados
      <?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "loc_equipamentos"; $conn = mysqli_connect($servername, $username, $password, $dbname) or die("Connection failed: " . mysqli_connect_error()); $requestData= $_REQUEST; $columns = array( 0=>'nome_usuario', 1=> 'cpf_usuario', 2=> 'data_nascimento', 3=> 'id_usuario', 4=> 'id_usuario', 5=> 'id_usuario' ); $sql = "SELECT nome_usuario, cpf_usuario, data_nascimento, id_usuario "; $sql.=" FROM usuario"; $query=mysqli_query($conn, $sql) or die("employee-grid-data.php: get employees"); $totalData = mysqli_num_rows($query); $totalFiltered = $totalData; . $sql = "SELECT nome_usuario, cpf_usuario, data_nascimento, id_usuario "; $sql.=" FROM usuario WHERE tipo_perfil = 'CLIENTE' AND ativo_usuario = 'TRUE'"; if( !empty($requestData['columns'][0]['search']['value']) ){ $sql.=" AND nome_usuario LIKE '".$requestData['columns'][0]['search']['value']."%' "; } if( !empty($requestData['columns'][1]['search']['value']) ){ $sql.=" AND cpf_usuario LIKE '".$requestData['columns'][1]['search']['value']."%' "; } if( !empty($requestData['columns'][2]['search']['value']) ){ //age $sql.=" AND data_nascimento LIKE '".$requestData['columns'][2]['search']['value']."%' "; } $query=mysqli_query($conn, $sql) or die("employee-grid-data.php: get employees"); $totalFiltered = mysqli_num_rows($query); $sql.=" ORDER BY ". $columns[$requestData['order'][0]['column']]." ".$requestData['order'][0]['dir']." LIMIT ".$requestData['start']." ,".$requestData['length']." "; $query=mysqli_query($conn, $sql) or die("employee-grid-data.php: get employees"); $data = array(); while( $row=mysqli_fetch_array($query) ) { $nestedData=array(); $informacao ="<div class='botaodiv'> <a href = ?informacao=".$row['id_usuario']." >+ Informações</a> </div>"; $editar ="<div class='botaodiv'> <a href = ?editar=".$row['id_usuario']." >Editar</a> </div>"; $deletar ="<div class='botaodiv'> <a href = ../Eventos/evento.php?DesativaCadastro=".$row['id_usuario']." >Excluir</a> </div>"; $nestedData[] = $row["nome_usuario"]; $nestedData[] = $row["cpf_usuario"]; $nestedData[] = $row["data_nascimento"]; $nestedData[] = $informacao; $nestedData[] = $editar; $nestedData[] = $deletar; $data[] = $nestedData; } $json_data = array( "draw" => intval( $requestData['draw'] ), "recordsTotal" => intval( $totalData ), "recordsFiltered" => intval( $totalFiltered ), "data" => $data ); echo json_encode($json_data); ?> Fora o caso de criar Detalhes para Linhas, Caso alguém tenha alguma sugestão de como melhorar meu código ( por exemplo uma Conexão ao Banco mais simples, um Js melhor etc.. ) ou alguma critica para eu evoluir, irei agradecer bastante!  
    • Por anepri
      Preciso fazer uma página de consulta onde selecionando a cidade traga como resultado estabelecimentos comerciais daquela cidade. O exemplo do código que estou usando funciona perfeitamente com países, estados e cidade, mas na hora que faço a função "lojas", mesmo o código sendo idêntico não aparece o resultado. O que tem me deixado doida é que os primeiros select funcionam, mas o último "lojas" não funciona de jeito nenhum! Alguém pode olhar o código e me dizer onde estou pecando?
       
      $(function(){ // Pais function pais(){ $.ajax({ type: 'GET', url: 'funcoes.php', data: { acao: 'pais' }, dataType: 'json', success: function(data){ console.log(data); for(i = 0; i < data.qtd; i++){ $('select[name=pais]').append('<option value="'+data.id[i]+'">'+data.pais[i]+'</option>'); } } }); } pais(); function estado(pais){ $.ajax({ type: 'GET', url: 'funcoes.php', data: { acao: 'estado', id: pais }, dataType: 'json', beforeSend: function(){ $('select[name=estado]').html('<option>Carregando...</option>'); }, success: function(data){ $('select[name=estado]').html(''); $('select[name=estado]').append('<option>Selecione o estado</option>'); for(i = 0; i < data.qtd; i++){ $('select[name=estado]').append('<option value="'+data.id[i]+'">'+data.estado[i]+'</option>'); } } }); } // Cidade function cidade(estado){ $.ajax({ type: 'GET', url: 'funcoes.php', data: { acao: 'cidade', id: estado }, dataType: 'json', beforeSend: function(){ $('select[name=cidade]').html('<option>Carregando...</option>'); }, success: function(data){ $('select[name=cidade]').html(''); $('select[name=cidade]').append('<option>Selecione a cidade</option>'); for(i = 0; i < data.qtd; i++){ $('select[name=cidade]').append('<option value="'+data.id[i]+'">'+data.cidade[i]+'</option>'); } } }); } function contrubuinte(cidade){ $.ajax({ type: 'GET', url: 'funcoes.php', data: { acao: 'contrubuinte', id: cidade }, dataType: 'json', beforeSend: function(){ $('select[name=contrubuinte]').html('<option>Carregando...</option>'); }, success: function(data){ console.log(data); $('select[name=contrubuinte]').html(''); $('select[name=contrubuinte]').append('<option>Selecione a contrubuinte</option>'); for(i = 0; i < data.qtd; i++){ $('select[name=contrubuinte]').append('<option value="'+data.id[i]+'">'+data.contrubuinte[i]+'</option>'); } } }); } $('select[name=pais]').change(function(){ var id = $(this).val(); estado(id); }); $('select[name=estado]').change(function(){ var idEstado = $(this).val(); cidade(idEstado); }); $('select[name=cidade]').change(function(){ var id = $(this).val(); contrubuinte(id); }); }); <?php require("config.php"); $retorno = array(); if($_GET['acao'] == 'pais'){ $sql = $pdo->prepare("SELECT * FROM pais"); $sql->execute(); $n = 0; $retorno['qtd'] = $sql->rowCount(); while($ln = $sql->fetchObject()){ $retorno['pais'][$n] = $ln->pais; $retorno['id'][$n] = $ln->id; $n++; } } if($_GET['acao'] == 'estado'){ $id = $_GET['id']; $sql = $pdo->prepare("SELECT * FROM estados WHERE id_pais = :id"); $sql->bindValue(":id", $id, PDO::PARAM_INT); $sql->execute(); $n = 0; $retorno['qtd'] = $sql->rowCount(); while($ln = $sql->fetchObject()){ $retorno['estado'][$n] = $ln->estado; $retorno['id'][$n] = $ln->id; $n++; } } if($_GET['acao'] == 'cidade'){ $id = $_GET['id']; $sql = $pdo->prepare("SELECT * FROM cidades WHERE id_estado = :id"); $sql->bindValue(":id", $id, PDO::PARAM_INT); $sql->execute(); $n = 0; $retorno['qtd'] = $sql->rowCount(); while($ln = $sql->fetchObject()){ $retorno['cidade'][$n] = $ln->cidade; $retorno['id'][$n] = $ln->id; $n++; } } if($_GET['acao'] == 'contribuinte'){ $id = $_GET['id']; $sql = $pdo->prepare("SELECT * FROM contribuinte WHERE id_cidade = :id"); $sql->bindValue(":id", $id, PDO::PARAM_INT); $sql->execute(); $n = 0; $retorno['qtd'] = $sql->rowCount(); while($ln = $sql->fetchObject()){ $retorno['contribuinte'][$n] = $ln->contribuinte; $retorno['id'][$n] = $ln->id; $n++; } } die(json_encode($retorno)); <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <select name="pais"> <option>Selecione o Pais</option> </select> <select name="estado"> <option>Selecione o Estado</option> </select> <select name="cidade"> <option>Selecione a Cidade</option> </select> <select name="contribuinte"> <option>Selecione o Contribuinte</option> </select> <script src="jquery.js"></script> <script src="funcoes.js"></script> </body> </html>  
    • Por dba.amaro
      Galera, bom dia/tarde/noite, 
       
      Estou desenvolvendo uma aplicação web, porém preciso mostrar algumas informações e os objetos vão mudar de cor / porcentagem, segundo as informações que estão contidas no banco de dados, 
       
      Tenho, algumas ideias, porém não sei nem por onde começar, se alguém puder ajudar, agradeço !!
       
      Um abraço  a todos e bons posts!
    • Por Malebo
      Boas.
       
      Estou a três semana com erro abaixo, preciso da vossa ajura para poder baixar as imagens do mysql no laradock.
      Abaixo o trecho de codigo, quando executou docker-compose up -d mysql ele nunca sai desta tela.
       
      $ docker-compose build --no-cache mysql
      Building mysql
      Step 1/9 : ARG MYSQL_VERSION=8.0
      Step 2/9 : FROM mysql:${MYSQL_VERSION}
      8.0: Pulling from library/mysql
       
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.