Se connecter à MySQL via localhost ne fonctionne pas mais 127.0.0.1 est de travail
OS: Ubuntu 14.04 LTS
la version de php de contrôle : phpbrew
version de php : 5.5.10
J'ai un ping localhost qui a résolu à l'adresse 127.0.0.1.
Cela indique que mon hôte (/etc/hosts) fichier est correct.
127.0.0.1 localhost
Chaque fois que je tente la connexion à MySQL à l'aide d'un script php comme celui-ci, il ne fonctionne pas et me donne l'erreur: no such directory.
//connect to the database
mysql_connect("localhost","root","password") or die(mysql_error());
Cependant, lorsque je me connecte via 127.0.0.1 il travaillera
//connect to the database
mysql_connect("127.0.0.1","root","password") or die(mysql_error());
En outre, mon phpmyadmin ne fonctionne pas lors de l'enregistrement à l'aide de "localhost" j'ai dû modifier le fichier à ajouter 127.0.0.1 option pendant l'ouverture de session.
Comment puis-je utiliser localhost pour se connecter à la base de données MySQL?
mysql_query
interface. Il est terrible et est en train d'être supprimés dans les futures versions de PHP. Un remplacement moderne comme PDO n'est pas difficile à apprendre. Un guide comme PHP Le Droit Chemin peut aider à expliquer les pratiques exemplaires. Toujours être absolument sûr vos paramètres de l'utilisateur sont échappées ou vous aurez de sérieux SQL injection de bugs.D'accord. Je suis en train de travailler avec le code existant et a été à la migration d'un serveur.
OriginalL'auteur JoeCodeCreations | 2015-07-14
Vous devez vous connecter pour publier un commentaire.
Dans de nombreux cas,
localhost
est un indicateur de l'utilisation de la socket UNIX pour se connecter au serveur MySQL, où127.0.0.1
forces d'une connexion TCP. Parfois, le socket UNIX est dans un cadre inattendu, ou n'est tout simplement pas accessible, ce qui entraîne dans le "fichier non trouvé" erreur.La prise est généralement quelque chose comme
/tmp/mysql.sock
ou qui pourraient l'être dans un autre lieu en fonction de votre distribution et de la façon dont beaucoup vous avez personnalisé.Garder à l'esprit que l'accès via UNIX socket, ce qui est local pour le serveur, par définition, et TCP sont contrôlés par deux règles différentes.
localhost
dans unGRANT
se réfère à la socket UNIX.%
ou spécifiques de l'hôte nom fait référence à distance via TCP.OriginalL'auteur tadman
La réponse à ce problème a été que dans la ma.cnf situé dans
la ligne était
ou
il doit avoir été
qui permettra à toutes les connexions
tout à fait d'accord! Si vous le faites, s'assurer que le port TCP 3306 est interdit pour l'accès depuis l'extérieur!
OriginalL'auteur JoeCodeCreations
PHP est encore en train d'essayer d'utiliser la valeur par défaut emplacement du connecteur. Ce problème peut survenir si vous avez déplacé le MariaDB/MySQL dossier de /var/lib/mysql à un autre emplacement. Afin de résoudre le problème, vous devez définir la nouvelle de la prise emplacement dans le /etc/php.ini fichier.
Attention, selon le pilote que vous utilisez, vous devrez spécifier le pdo_mysql.default_socket=!
Afin de vérifier votre répertoire actuel, exécutez la commande suivante dans mysql:
mysqladmin variables | grep socket
commande qui a été pointant vers/tmp/mysql.sock
. (OS X Sierra)OriginalL'auteur joelschmid