Imansible connettersi a MySQL utilizzando 'localhost' ma utilizzando '127.0.0.1' è ok?

Il mio file / etc / hosts ha il seguente aspetto:

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 

Ho trovato durante la creazione del server, che anche se ho potuto ping localhost con successo, in alcuni file di configuration per servizi come Postfix e Apache e Dovecot, avrei dovuto specificare 127.0.0.1 anziché localhost per farli funzionare.

Ho anche bisogno di modificare i file di configuration di alcuni siti web guidati da database, che hanno utilizzato localhost per connettersi a MySQL.

Ho provato diverse modifiche al file hosts , ma niente che ho provato fino ad ora ha aiutato.

Il server sta eseguendo Ubuntu 12.04.02 LTS. Non è installato selinux e la situazione precedente rimane anche dopo aver impostato i criteri predefiniti di IPtables per accettarli e sciacquarli.

7 Solutions collect form web for “Imansible connettersi a MySQL utilizzando 'localhost' ma utilizzando '127.0.0.1' è ok?”

Una cosa che puoi controllare è (che richiede di accedere alla console di MySQL). Controllare di avere accesso ai root per accedere tramite localhost .

mysql -h 127.0.0.1 -u root -p

– Una volta che si è connesso con successo –

 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) 

Proprio buttandolo là fuori, solo nel caso in cui sia questo il problema.

La maggior parte dei client MySQL è dispari nel fatto che se si specifica l'host come localhost , si alias che a una connessione socket invece di una connessione TCP. Le opzioni sono da attaccare con 127.0.0.1 o, se il client lo support (come il codice binario mysql CLI fa con il flag --protocol ), forzarlo per utilizzare TCP invece di una socket unix.

Una cosa da notare se le sovvenzioni sono corrette è se il tuo utilizzo di MariaDB è stato un bug che ha causato questo comportmento esatto nella versione 10.0.1 e 5.5.30 https://mariadb.atlassian.net/browse/MDEV-4356

Puoi controllare l'authorization come segue:

[learner @ 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 si sta ascoltando su 0 0.0.0.0:* significa che ognuno può accedere a tale mysql.

è ansible modificare il binding per questo nel file my.conf. Nel path predefinito di linux per questo è:

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

Aggiungere queste righe nel file my.conf per consentire l'ip che si desidera.

bind-address = 127.0.0.1

bind-address = 0.0.0.0

PHP sta ancora cercando di utilizzare la posizione socket predefinita. Questo problema può essere visualizzato se si è spostato la cartella MariaDB / MySQL da / var / lib / mysql in un'altra posizione. Per risolvere il problema è necessario definire la posizione del nuovo socket nel file /etc/php.ini .

 mysqli.default_socket =/newDBLocation/mysql/mysql.sock 

Ho risolto questo problema creando il symlink, sudo ln -s /opt/lampp/var/mysql/mysql.sock /var/run/mysqld/mysqld.sock . Ma innanzitutto devo creare la cartella /var/run/mysqld/ perché la cartella non esisteva inizialmente.

Hai bisogno di un mysql.sock in / tmp

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

dovrebbe funzionare bene dopo di che.

Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.