Um cliente MySQL 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 MySQL 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 MySQL 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. See Secção 2.4.2, “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 MySQL 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. See Secção 2.2.3, “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
trabalho cron
que remove o socket MySQL
(por exemplo, um trbalhoque remove arquivos antigos do
diretório /tmp
). Você sempre pode
executar mysqladmin version
e verificar
que o socket que o mysqladmin
está
tentando usar realmente existe. A correção neste caso é
alterar o trabalho cron
para não remover
mysqld.sock
ou para colocar o socket em
outro local. See Secção A.4.5, “Como Proteger ou AlterarHow to Protect or Change the MySQL 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 MySQL sobre o novo caminho. Você
pode fazer isto fornecendo o caminho do socket como um
argumento para o cliente. See
Secção A.4.5, “Como Proteger ou AlterarHow to Protect or Change the MySQL 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 script
mysql_zap
antes de você poder iniciar um
novo servidor MySQL. See Secção A.4.1, “O Que Fazer Se o MySQL 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
MySQL 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 MySQL
em execução nesta porta você deve obter uma resposta que
inclui o número da versão do servidor MySQL em execução.
Se você obter um erro como telnet: 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 o
mysqld
está configurado para usar
(variável port
) com mysqladmin
variables
.
Verifique se o seu servidor mysqld
não
foi iniciado com a opção
--skip-networking
.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.