Eu gostaria de analisar o mysql
tráfego. No momento, todas as solicitações mysql são enviadas para o soquete do MySQL unix:
unix 2 [ ACC ] STREAM LISTENING 3734388 15304/mysqld /var/run/mysqld/mysqld.sock
Estou tentando desativar esse soquete para forçar o MySQL a usar o soquete de rede em vez do loopback. Eu tentei comentar a todas as socket
directivas no my.cnf
e debian.cnf
arquivos e reiniciado MySQL, mas isso não fez diferença.
Como posso desativar o soquete unix do MySQL para forçar o MySQL pela rede?
Informação adicional: Eu estou correndo MySQL 5.1
em ubuntu 10.04
.
Precisões sobre a pergunta
Como muitas pessoas sugeriram a ativação do soquete de rede, gostaria de esclarecer minha pergunta apontando que o endereço de ligação já estava ativado bind-address = 127.0.0.1
e que uma conexão de escuta está disponível:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 15601/mysqld
Ainda não vejo nenhuma tentativa de conexão 127.0.0.1:3306
vinda do meu aplicativo da web (site do Drupal).
Atualizado com a resposta
Parece realmente que o problema vem do mysqli
conector que o Drupal usa ( .ht_config.php
para aqueles que estão interessados). Foi definido mysqli://drupal:***@localhost/drupal
:, alterando localhost
para 127.0.0.1
corrigir o problema (ou seja, o Drupal agora está fazendo conexões com o soquete de rede).
--protocol
... veja a resposta de Jonathan.No Linux e em outros * nixes, o MySQL assumirá que você deseja usar um soquete se você se conectar ao host "localhost" (que seria o nome do host padrão).
Você pode substituir isso de três maneiras: 1) Especifique um nome de host diferente como 127.0.0.1 (
mysql -h 127.0.0.1
) ou o nome do host real do servidor 2) Especifique que deseja usar o TCP e não um soquete (mysql --protocol tcp
)Você também pode facilmente fazer com que o padrão seja editar meu my.cnf para que ele possua isso ([client] significa qualquer cliente:
Você pode ver a descrição completa de como o MySQL decide como se conectar aqui:
http://dev.mysql.com/doc/refman/5.5/en/connecting.html
fonte
Isso não é realmente um problema do cliente? Se estiver usando o programa mysql, você pode usar o
--protocol
switch. Na página do manualEu apenas tentei
enquanto monitora a porta 3306 com
tcpdump -i lo tcp port 3306
e posso ver o tráfego, enquanto se eu apenas corroEu (corretamente) não vejo tráfego na porta 3306.
EDITAR:
Agora que você nos diz que está usando o DRUPAL, a solução é relativamente fácil.
Vá para
sites/<sitename>
ousites/default
edite osettings.php
arquivoVocê encontrará uma estrutura como esta
Mude
'localhost'
para'127.0.0.1'
e salve o arquivo.fonte
no control
eu estava sendo dramático. Eu poderia modificar o.ht_config.php
arquivo e corrigir o problema..ht_config.php
vez desettings.php
. Não sei por que (a equipe de desenvolvimento solicitou que fosse assim). Agora, a questão é que o Drupal parece estar lendo o.ht_config.php
arquivo em cada solicitação (porque, se eu mudar, as alterações são imediatamente levadas em conta), o que não pode ajudar nas performances. Estaremos procurando uma maneira de armazenar em cache essas configurações na camada do aplicativo, mas esse é um problema diferente.--protocol=socket
se você tem umahost
entrada na[client]
seção.my.cnf
dáwrong or unknown protocol
erro. (mysql 5.7.13)Isso pode parecer um pouco louco
Tente definir o arquivo de soquete para um caminho absoluto cujo caminho reside em outra máquina
http://dev.mysql.com/doc/refman/5.0/en/server-options.html#option_mysqld_socket
Caso contrário, você não poderá ignorar esse comportamento padrão porque deve existir um arquivo de soquete para o mysqld se comunicar.
fonte
Edite o my.cnf e adicione a diretiva
ou seu IP preferido para torná-lo acessível através da rede. Reinicie o mysql depois para que ele funcione.
fonte
O cliente php mysqli usará o arquivo de soquete unix em vez da rede tcp quando você passar o valor NULL ou a string "localhost" ( http://www.php.net/manual/en/mysqli.construct.php )
parece que o cliente sqlyog sempre usa a rede tcp mesmo quando você preenche "localhost" nela
fonte
Eu tive que excluir o /etc/my.cnf (depois de fazer o backup) e, em seguida, reiniciei o servidor. Então eu pude conectar com um soquete e o erro desapareceu.
fonte