Não é possível conectar-se ao MySQL usando 'localhost', mas usando '127.0.0.1', tudo bem?

10

Meu arquivo / etc / hosts tem esta aparência:

127.0.0.1 localhost

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Eu encontrei enquanto construí o servidor, que embora eu pudesse pingar localhost com sucesso, em certos arquivos de configuração para serviços como Postfix e Apache e Dovecot, eu precisava especificar 127.0.0.1 em vez de localhost para fazê-los funcionar.

Eu também precisava alterar os arquivos de configuração de certos sites baseados em banco de dados, que usavam localhost para se conectar ao MySQL.

Eu tentei várias modificações no arquivo hosts , mas nada que eu tentei até agora ajudou.

O servidor está executando o Ubuntu 12.04.02 LTS. Ele não tem o selinux instalado e a situação acima permanece mesmo depois de definir as políticas padrão do IPtables para aceitá-las e liberá-las.

    
por Peter Snow 07.10.2013 / 02:27

7 respostas

11

Uma coisa que você pode verificar é (o que requer que você faça o login no console do MySQL) - verifique se você tem permissão para fazer o login em root via localhost .

mysql -h 127.0.0.1 -u root -p

- Depois de ter efetuado login com êxito -

mysql> select user,host from mysql.user;
+------+--------------------------------+
| user | host                           |
+------+--------------------------------+
| root | 127.0.0.1                      | 
| root | ::1                            |
| root | localhost                      | <-- Make sure you have a localhost entry for root
+------+--------------------------------+
3 rows in set (0.00 sec)

Apenas jogue isso lá fora, caso seja a questão.

    
por 07.10.2013 / 05:41
5

A maioria dos clientes MySQL é ímpar no fato de que, se você especificar o host como localhost , eles o nomeiam para uma conexão de soquete em vez de uma conexão TCP. Suas opções são ficar com 127.0.0.1 ou, se o cliente suportar (como o binário mysql CLI faz com o --protocol flag), forçá-lo a usar TCP ao invés de um socket unix.

    
por 07.10.2013 / 03:29
1

Uma coisa a ser notada se as doações estão corretas é que se você usou o MariaDB, houve um bug que causou esse comportamento exato na versão 10.0.1 e 5.5.30 link

    
por 07.10.2013 / 08:04
1

Você pode verificar a permissão assim:

[aluno @ localhost ~] $ sudo netstat -npa | grep mysqld

tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 6284 / mysqld
unix 2 [ACC] STREAM LISTENING 233040 6284 / mysqld /var/lib/mysql/mysql.sock

Se isso está escutando em 0 0.0.0.0:*, significa que todos podem acessar esse mysql.

você pode editar a ligação para isso no arquivo my.conf. No caminho padrão do linux para isso é:

[aluno @ localhost ~] $ sudo vi /etc/my.cnf

Adicione estas linhas no arquivo my.conf para permitir o ip que você quer.

bind-address = 127.0.0.1

bind-address = 0.0.0.0

    
por 07.10.2013 / 11:57
0

O PHP ainda está tentando usar o local do soquete padrão. Esse problema pode aparecer se você moveu a pasta MariaDB / MySQL de / var / lib / mysql para outro local. Para resolver o problema, você deve definir a localização do novo socket no arquivo /etc/php.ini .

mysqli.default_socket =/newDBLocation/mysql/mysql.sock
    
por 17.02.2017 / 11:27
0

Eu resolvi esse problema criando um symlink, sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock . Mas primeiro tenho que criar a pasta /var/run/mysqld/ porque a pasta não existia inicialmente.

    
por 28.03.2017 / 12:48
-1

Você precisa de um mysql.sock em / tmp

ln -s /var/lib/mysql/mysql.sock mysql.sock

deve funcionar bem depois disso.

    
por 28.03.2015 / 11:06