Erro: Can't connect to [local] MariaDB server
Um cliente MariaDB em Unix pode conectar ao servidor mysqld
de dois modos diferentes: sockets Unix, que conectam através de um arquivo no sistema de arquivos (padrão /tmp/mysqld.sock
) ou TCP/IP, que conecta através um número de porta. Sockets Unix são mais rápidos que TCP/IP mas só podem ser usados quando conectados ao servidor no mesmo computador. Sockets Unix são usados se você não especificar um nome de máquina ou se você especificar o nome de máquina especial localhost
.
No Windows, se o servidor mysqld
está rodando no 9x/Me, você só pode conectar via TCP/IP. Se o servidor estiver rodando no NT/2000/XP e o mysqld é iniciado com --enable-named-pipe
, você também pode conectar com named pipes. O nome do named pipes é MySQL. Se você não der um nome de máquina quando conectar ao mysqld
, um cliente MariaDB tentará conectar primeiro ao named pipe, e se isto não funcionar ele irá conectar a porta TCP/IP. Você pode forçar o uso de named pipes no Windows usando .
como nome de máquina.
O erro (2002) Can't connect to ...
normalmente significa que não há um servidor MariaDB rodando no sistema ou que você está usando um arquivo socket ou porta TCP/IP errado ao tentar conectar so servidor mysqld
.
Inicie verificando (usando ps
ou gerenciador de tarefas do Windows) que há um processo chamado mysqld
executando em seu sistema! Se não houver nenhum processo mysqld
, você deve iniciar um. Leia "Problemas Inicializando o Servidor MySQL".
Se um processo mysqld
estiver em execução, você pode verificar o servidor tentando estas diferentes conexões (o número da porta e o caminho do socket devem ser diferente em sua consiguração, é claro):
shell>mysqladmin version
shell>mysqladmin variables
shell>mysqladmin -h `hostname` version variables
shell>mysqladmin -h `hostname` --port=3306 version
shell>mysqladmin -h 'ip for your host' version
shell>mysqladmin --protocol=socket --socket=/tmp/mysql.sock version
Note o uso de aspas para traz em vez de aspas para frente com o comando hostname
; isto provoca a saída de hostname
(que é, o nome de máquina atual) para ser substituído no comando mysqladmin
.
Aqui estão algumas razões pela quais o erro Can't connect to local MariaDB server
pode ocorrer:
mysqld
não está rodando.- Você está rodando em um sistema que usa MIT-pthreads. Se você estiver executando em um sistema que não possui threads nativas, o
mysqld
usa o pacote MIT-pthreads. Leia "Sistemas Operacionais suportados pelo MySQL". No entanto, nem todas as versões de MIT-pthreads suportam sockets Unix. Em um sistema sem suporte a sockets você sempre deve especificar o nome de máquina explicitamente ao conectar ao servidor. Tente usar este comando para verificar a conexão com o servidor:shell>
mysqladmin -h `hostname` version
- Alguém removeu o socket Unix que o
mysqld
utiliza (por padrão/tmp/mysqld.sock
). Você deve ter um trabalhocron
que remove o socket MariaDB (por exemplo, um trbalhoque remove arquivos antigos do diretório/tmp
). Você sempre pode executarmysqladmin version
e verificar que o socket que omysqladmin
está tentando usar realmente existe. A correção neste caso é alterar o trabalhocron
para não removermysqld.sock
ou para colocar o socket em outro local. Leia Seção A.4.5, "Como Proteger ou AlterarHow to Protect or Change the MariaDB Socket File/tmp/mysql.sock
". - Você iniciou o servidor
mysqld
com a opção--socket=/path/to/socket
. Se você alterar o caminho do socket para o servidor, você também deve notificar o cliente MariaDB sobre o novo caminho. Você pode fazer isto fornecendo o caminho do socket como um argumento para o cliente. Leia Seção A.4.5, "Como Proteger ou AlterarHow to Protect or Change the MariaDB Socket File/tmp/mysql.sock
". - Você está usando Linux e uma thread finalizou (core dumped). Neste caso você deve matar as outras threads
mysqld
(por exemplo, com o scriptmysql_zap
antes de você poder iniciar um novo servidor MySQL. Leia Seção A.4.1, "O Que Fazer Se o MariaDB Continua Falhando". - Você pode não ter privilégios de leitura e escrita tanto no diretório que guarda o arquivo de socket quanto no próprio arquivo de socket. Neste caso você deve mudar o privilégio do diretório/arquivo ou reiniciar
mysqld
para que ele use um diretorio que você possa utilizar.
Se você obter a mensagem de erro Can't connect to MariaDB server on alguma_maquina
, você pode tentar o seguinte para descobrir qual é o problema:
- Verifique se o servidor está funcionando fazendo
telnet seu-servidor num-porta-tcp-ip
e pressione Enter algumas vezes. Se houver um servidor MariaDB em execução nesta porta você deve obter uma resposta que inclui o número da versão do servidor MariaDB em execução. Se você obter um erro comotelnet: Unable to connect to remote host: Connection refused
, então não há nenhum servidor rodando na porta dada. - Tente conectar ao daemon
mysqld
na máquina local e verifique a porta TCP/IP que omysqld
está configurado para usar (variávelport
) commysqladmin variables
. - Verifique se o seu servidor
mysqld
não foi iniciado com a opção--skip-networking
.