2012-04-27 23 views
10

Con questo codice è possibile connettersi a mysql: mysql_connect("localhost","username","");Impossibile connettersi a MySQL con 127.0.0.1

Ma se cambio localhost a 127.0.0.1 ricevo il seguente errore:

Impossibile connettersi a MySQL server su '127.0.0.1' (13)

Perché non funziona con 127.0.0.1?

+0

Questo dovrebbe essere un "Permesso negato" questione. –

+0

Che piattaforma stai usando, windows o unix? –

+0

@ Jürgen Thelen - Perché dovrebbe? – Quentin

risposta

19

localhost è di tipo speciale e utilizza socket UNIX anziché TCP/IP. 127.0.0.1 non ottiene quella gestione speciale.

Vedi the documentation:

On Unix, MySQL programs treat the host name localhost specially, in a way that is likely different from what you expect compared to other network-based programs. For connections to localhost, MySQL programs attempt to connect to the local server by using a Unix socket file. This occurs even if a --port or -P option is given to specify a port number. To ensure that the client makes a TCP/IP connection to the local server, use --host or -h to specify a host name value of 127.0.0.1, or the IP address or name of the local server. You can also specify the connection protocol explicitly, even for localhost, by using the --protocol=TCP option.

Se non funziona quando si utilizza il protocollo TCP/IP quindi il database probabilmente non è in ascolto sulla rete. Questa è generalmente una buona cosa in quanto migliora la sicurezza (non che l'ascolto su 127.0.0.1 esponga problemi, ma l'ascolto su tutte le interfacce offre maggiori opportunità di attacchi).

Se si desidera realmente consentire le connessioni tramite la rete, vedere skip-networking.

1

hai una voce nel file hosts che associa 127.0.0.7 a localhost?

0

Avete più di 1 server mysql installati/in esecuzione sul vostro sistema? In tal caso, specificare il numero di porta del server mysql a cui si sta tentando di accedere come 127.0.0.1:3306,127.0.0.1:8889 ecc.

Se non si sa se ci sono altre istanze di server mysql in esecuzione su anche il tuo sistema, per favore specifica la porta.

+0

L'esecuzione di una seconda istanza di MySQL impedisce al primo di essere eseguito sulla porta predefinita ora? – Quentin

+0

No, non impedisce l'esecuzione ma potrebbe non essere in grado di accedere al server mysql senza menzionare il numero di porta anche quando è in esecuzione sulla porta predefinita quando è in esecuzione più di 1 istanza – ilight

0

Sarete in grado di accedervi quando si aggiungono i privilegi per 'root'@'127.0.0.1' nella tabella "USER_PRIVILEGES" nel "information_schema" banca dati

+0

No. Se questo era il problema, l'errore sarebbe essere "Accesso negato per l'utente", non "impossibile connettersi" – Quentin

0

Si potrebbe anche provare a disabilitare SELINUX

Problemi correlati