Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Emerson Placido

MySQL server through socket

Recommended Posts

Opa,

 

Por padrão, o MySQL em sistemas operacionais Unix ou Linux (Unix-Like), utiliza para conexões locais o socket, que fica no diretório /tmp/mysql.sock. Assim como, para conhecimento, o Windows utiliza named pipes (.) para conexões locais ou memória compartilhada nomeada (--named-pipe, --shared-memory).

 

Você já tentou se conectar ao mysql através do mysql client (linha de comando) utilizando TCP/IP?

 

Digite: mysql -u root -p -h 127.0.0.1 , isso forçará o mysql a procurar a sua máquina usando protocolo TCP/IP e não o socket, que pelo erro, ele não foi encontrado.

 

Um abraço, continue postando!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se voce tiver usando Linux "como parece" esse erro ocorre quando um ou mais desses fatores forem verdadeiros:

 

- O servidor não está rodando.

- O socket não existe.

- O usuário mysql não tem permissão de leitura e escrita nesse arquivo.

- O db não foi inicializado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Kandrade,

 

Só uma correção camarada...o que é iniciado no MySQL não é o db, pois ele está dentro do SGBD. Então, o que se inicia é o SGBD, portanto, se ele não estiver rodando, o SGBD, o erro seria "ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)". Permissão de escrita, o que vem do MySQL é aceito no arquivo pois ele é prórpio do MySQL. As permissões deste arquivo é 700 (rwx - --- - ---) , se não me engano.

 

O que de fato está acontecendo é alguma irregularidade com o socket.

 

A saber:

  • o arquivo mysql.sock existe na pasta /tmp ?
  • o mysql está sendo iniciado com conexão local (-h localhost) ou TCP/IP (-h 127.0.0.1) ?
Vamos registrando aí...abração camaradas!! DEUS Abençõe à todos!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem razão Wagner, muitos dos fatores que postei acima são relacionados ao servidor.

Então a mensagem seria outra. Desculpa ai!

 

http://forum.imasters.com.br/public/style_emoticons/default/blush.gif

 

Eu tenho dúvidas.

Eu consigo iniciar o servidor mesmo sem o socket?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Wagner,

 

Fiz testes no Slackware rodando um servidor mysql.

Quando inicio o servico ele cria o socket e permite conexão.

Quando paro o servico e tento acessar o banco acontece o mesmo erro apresentado acima. Pelo menos no meu Slackware se o servidor não estiver rodando o erro apresentado é o mesmo do amigo.

 

Tirei os screenshots se precisarem para analisar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho dúvidas.

Eu consigo iniciar o servidor mesmo sem o socket?

Opa,

 

Legal que o tópico continuou! Bacana esse assunto e considero que vai ser válido para todos nós...vamos lá!

 

Como já abordei em outro tópíco e como "recordar é viver", em sistema like-unix, você pode utilizar duas vias de conexão com o MySQL: Socket para conexões em host local, ou seja, quando conectamos ao MySQL, omitindo a opção -h. Automaticamente, ele procurará o socket para conexão...caso você não omita -h e atribua localhost a ele, será a mesma coisa, conexão via socket.

 

Mas, podemos fazer uma conexão ao prório host via TCP/IP, o que não utilizaria o socket, já que o TCP/IP é o protocolo default para conexões remotas no MySQL. Basta conectarmos da seguinte maneira:

 

shell> mysql -u root -p -h 127.0.0.1

 

...assim ele utilizará o TCP/IP, ok?

 

Vamos trocando idéias aí . . .DEUS abençõe camarada!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu entendi essa parte.

Inclusive testei a conexão tcp/ip com o servidor parado e com o servidor rodando e as mensagens são mesmo diferentes.

Minha dúvida é:

- O servidor mysql inicia se o socket não for criado?

Pelo que testei ele mesmo o cria e no diretório onde é criado o socket o usuário mysql precisa ter permissão de escrita.

 

 

 

Como já abordei em outro tópíco e como "recordar é viver", em sistema like-unix, você pode utilizar duas vias de conexão com o MySQL: Socket para conexões em host local, ou seja, quando conectamos ao MySQL, omitindo a opção -h. Automaticamente, ele procurará o socket para conexão...caso você não omita -h e atribua localhost a ele, será a mesma coisa, conexão via socket.

 

Mas, podemos fazer uma conexão ao prório host via TCP/IP, o que não utilizaria o socket, já que o TCP/IP é o protocolo default para conexões remotas no MySQL. Basta conectarmos da seguinte maneira:

 

shell> mysql -u root -p -h 127.0.0.1

 

...assim ele utilizará o TCP/IP, ok?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Minha dúvida é:

- O servidor mysql inicia se o socket não for criado?

Para conexões locais ele necessita do socket, caso este não seja criado, a cone~xao via localhost não será estabelecida.

Agora, indo para os fatores de instalação, quando se instala a MySQL a partir do Source (fonte), você deverpa criar usuário "mysql" e também seu grupo, chamado mysql (em algumas distribuições, por padrão, ao criar o usuário mysql ele é criado em um grupo mysql) e dar a ele permissão no /tmp. A instalação pelo binário ou rpm já faz isso automaticamente.

 

Vamo que vamo. . .abração camarada K!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Obs.: Já morei em Palmas, próximo a Ulbra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obs.: Já morei em Palmas, próximo a Ulbra.

Não acredito perdi a oportunidade de conhecer um fera como voce.

:(

 

Agora, indo para os fatores de instalação, quando se instala a MySQL a partir do Source (fonte), você deverpa criar usuário "mysql" e também seu grupo, chamado mysql (em algumas distribuições, por padrão, ao criar o usuário mysql ele é criado em um grupo mysql) e dar a ele permissão no /tmp.

Eu lembro que quando instalei o mysql pela última vez na minha máquina ele pedia pra não só criar o usuário mysql como mudar o dono de todo o diretório /var/lib/mysql bem como seus subdiretórios. Isso pode ser feito assim:

 

chown -R mysql.mysql /var/lib/mysql

Creio que este é o local onde são armazenados os databases.

 

Outra coisa que pode-se fazer é:

 

- Remover o socket

- Criar um novo

- Dar as permissões necessárias.

 

#rm -f /tmp/mysql.sock
#touch /tmp/mysql.sock
#chown mysql.mysql /tmp/mysql.sock

Desde quando comecei a usar Linux vejo pessoas com essa dúvida.

 

Claro estou pensando que o server nem iniciou, afinal o usuário que fez a pergunta não dá nenhum retorno.

 

O correto seria:

Ir na máquina onde o server se encontra e verificar se o mysql está rodando.

 

no shell

ps aux

ou

ps aux | grep mysqld

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa,

 

Oportunidade de nos conhecermos não faltará!

È, o prórpio usuário do tópico sumiu. . .mas, fizemos uma documentação para o fórum!! ehehehe, muito bom!

Continuando, boa listar os processos e também, para fechar, usando o utilitário mysqladmin:

 

shell> mysqladmin -u root -p ping

 

Boa camarada!! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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