Bonjour,
J'ai mis en place un serveur avec Mysql, phpmyadmin et Webmin afin de simplifier la gestion du serveur. J'arrive à accéder sans problème à phpmyadmin depuis internet, j'arrive à mis connecter. Cependant je n'arrive pas à accéder à ma base de donnée qui est sur le port 3306. Il faut d'après ce que j'ai compris ouvrir le port 3306 afin que je puisse communiquer avec la base, chose que j'ai fait.
Du coup je test bêtement à me connecter en pdo à la base de donnée, mais j'ai une jolie erreur avec : hôte inconnu.
$pdo = new PDO('mysql:host=IP_DU_VPS.1;port=3306;dbname=web_site_v1', BDD_NOM, MDP);
J'aurai ainsi aimé avoir un peu d'aide afin de pouvoir me connecter en pdo à ma base de donnée.
Merci par avance,
----
Debian 7 - mysql 5.5.53
Serveurs Privés Virtuels (VPS) - [résolu] Serveur Mysql - hôte inconnu
Related questions
- Perte de mot de passe
48247
26.05.2023 13:36
- Comment configurer/utiliser un SMTP depuis un VPS ?
46951
07.10.2019 10:49
- Je connais que le mutu et besoin de node js
46481
14.04.2017 13:34
- Qu'est-ce vcore?
45382
06.01.2017 19:20
- Envoi Email via SMTP (port 587) sur VPS Pro1
44528
27.01.2017 10:02
- Mon VPS à Timed Out
41814
15.03.2017 22:50
- Délai de livraison VPS
41573
11.07.2018 15:15
- Problème avec statisitique Plesk
38996
29.03.2017 07:44
- Accès externe base de données
38615
18.07.2018 10:29
Sur le même serveur (php et mysql) ? Si oui, quel est l'intérêt de l'exposer (avec tous les problèmes de sécurité que ça peut poser) quand tu peux passer par localhost, et encore mieux, une socket Unix (PHP? faisant la conversion de la valeur "localhost" à une socket) ?
hôte inconnu, si je ne m'abuse, c'est purement et simplement un nom dont la résolution DNS échoue (= ce n'est pas une IP en paramètre host du DSN) ?
as tu essaye simplement localhost en adresse
Bonjour,
si vous souhaitez y accéder depuis l'extérieur est-ce que vous avez configuré MySQL en fonction de ça (par défaut il écoute uniquement en local) ?
De plus une fois ouvert à l'internet il faut penser à sécuriser les accès car tout le monde pourra essayer de trouver votre pass MySQL.
Cordialement, janus57
Bonjour,
dans webmin vous n'auriez pas activé un firewall ?
De plus dans ce genre de cas pour ma part je préfère vérifier en ligne de commande le fichier de MySQL + retour de iptables.
Enfin pour finir après chaque modification de la configuration de mysql il faut restart le service sinon elle ne sera jamais appliqué la modification.
Cordialement, janus57
quel est le message d'erreur exactement ? Parce que hôte inconnu en se connectant sur l'IP ça me parait étrange...
Check avec http://php.net/manual/fr/pdo.connections.php
T'auras deux, trois surprises.
perso j'enlèverai le ;port=3306 ou alors je mettre ip_du_vps:3306
Après j'utilise pas les connexion en pdo mais directement mysqli et suis pas très doué en php :)
> il manquait juste un espace entre mysql et hôte ...
Non, il n'en faut pas. Parce que là, il ignore ton paramètre host donc il cherche à établir une connexion locale par défaut, d'où le passage à une socket ...
> perso j'enlèverai le ;port=3306 ou alors je mettre ip_du_vps:3306
Non, le port se met à part, http://php.net/manual/fr/ref.pdo-mysql.connection.php il y a un paramètre séparé prévu pour.
Ne fait pas ça.
Le socket "mysqld.sock" est ici /var/run/mysqld/ depuis une siècle.
Il faut pas que tu le bouge.
Parfait, du confirme qu'il faut pas faire ça.
T'as phpmyadmin sur ton serveur ?
Login avec l’utilisateur et son mot de passe fonctionne ?
Sinon :
` mysql -u **utilisateur** -p **nom-de-la-base**`
Fonctionne ?
Stop mysql.
Si le fichier "/var/run/mysqld/mysqld.sock" existe, vire le manuellement.
Idem pour le pid.
Démarre mysql et observe le log de démarrage.
Constate que le fichier 'socket =" est crée de nouveau.
Exemple :
170120 17:08:35 InnoDB: Starting shutdown...
170120 17:08:36 InnoDB: Shutdown completed; log sequence number 7874971404
170120 17:08:36 [Note] /usr/sbin/mysqld: Shutdown complete
170120 17:08:37 [Note] Plugin 'FEDERATED' is disabled.
170120 17:08:37 InnoDB: The InnoDB memory heap is disabled
170120 17:08:37 InnoDB: Mutexes and rw_locks use GCC atomic builtins
170120 17:08:37 InnoDB: Compressed tables use zlib 1.2.8
170120 17:08:37 InnoDB: Using Linux native AIO
170120 17:08:37 InnoDB: Initializing buffer pool, size = 128.0M
170120 17:08:37 InnoDB: Completed initialization of buffer pool
170120 17:08:37 InnoDB: highest supported file format is Barracuda.
170120 17:08:37 InnoDB: Waiting for the background threads to start
170120 17:08:38 InnoDB: 5.5.54 started; log sequence number 7874971404
170120 17:08:38 [Note] Server hostname (bind-address): 'localhost'; port: 3306
170120 17:08:38 [Note] - 'localhost' resolves to '127.0.0.1';
170120 17:08:38 [Note] Server socket created on IP: '127.0.0.1'.
170120 17:08:38 [Note] Event Scheduler: Loaded 0 events
170120 17:08:38 [Note] /usr/sbin/mysqld: ready for connections.
**Version: '5.5.54-0+deb8u1-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Debian)**
A tout hasard : https://www.wordetweb.com/word-et-web/OVH-Tester-une-base-de-donnees-via-un-script-PDO-FR.htm OVH - Test de Base de Données via un script en langage PDO
euh .. lol.
Faut pas supprimer le fichier socket quand mysql tourne. Ça, ce'nest pas bon.
Pourquoi tu ne montre pas le logs de démarrage ? C'est ça qui donne le pourquoi.
"failed" ne dit rien.
T'as un serveur.
Tu osculte les logs. Tout le temps. C'est comme ça qu'on surveille un serveur - quand ça va bien. Quand ça va pas, je le "tail" presque tous.
Salut
si ton site php est sur le même serveur que mysql
Tu met localhost en hôte
PHP va remplacer automatiquement localhost par le lien de socket Mysql qui est configuré dans php.ini. Tu n'as pas besoin d'indiquer de port.
Si ton site php n'est pas sur le même serveur, il faut que ton serveur mysql soit accessible de l'extérieur.
Dans my.cnf :
Tu dois commenter => bind-address = 127.0.0.1
ou alors tu met l'IP public de ton VPS.
ensuite tu dois ouvrir le port 3306 TCP IN, pour gérer le parefeu tu peux utliser CSF, il y a un module webmin, ça sera pus facile que de taper les commandes iptables directement.
Ensuite il ne faut pas oublier de créer un utilisateur mysql acceptant l'IP d'où vient la demande de connexion.
Ensuite dans ton script PHP tu remplaces localhost par l'IP de ton VPS, avec ou sans le port car php ajoutera systématiquement le port 3306 (port par défaut dans php.ini)
Aides toi de tuto sur internet car là en lisant tes posts, on voit que tu te précipites un peu trop.
Bonne chance
Edit : pour les log si tu es sous debien 8, tapes : service mysql status
ça te mettra les raisons du problème de démarrage.
T'as commis l'erreur le plus classiqie possible.
AVANT de pose UNE question, on mentionne : le nom, type et version de son OS.
ET la version du logiciel (mysql) concernant.
C'est vrai, Windows de Microsoft existe, mais dans le domine OS libre c'est un peu plus vaste : https://fr.wikipedia.org/wiki/Linux#/media/File:Linux_Distribution_Timeline.svg
Un OS standard (Debian / Ubuntu ) : Va voir ici /var/log/
Je pense que mysql possède un sous répertoire nomme ... /mysql/ ...
Je ne sais pas si mysql logge tout par défaut - ça se paramètre dans /etc/mysql/my.cnf
Sur un serveur, beaucoup est loggé **. Car c'est la seule moyen de vérifier si tout va bien. C'est l'outil le plus important pour la gestion d'un serveur. Par défaut, les logs ne sont pas désactivé - au contraire.
** et chaque service possède son parpamétrage pour logger plus - si tu cherche un erreur, on moins.
Comme dit dans mon message précédent
tapes pkill mysqld pour forcer la fermeture de mysql
si cela ne fonctionne pas, reboot ton VPS
Re montre ton log qui montre le démarrage de mysql.
(pas avec un image, utilise Putty, souris, sélectionne le moreau concernant de ce log et colle (Ctrl-V) le ici)
Montre aussi ton /etc/mysql/my.cnf entier.
Change:
myisam-recover = BACKUP
key_buffer = 16M
pour:
myisam-recover-options = BACKUP
key_buffer_size = 16M
Ajoute dans la section [mysqld]:
bind-address = 0.0.0.0
Il n'y a pas à avoir honte à une erreur de saisie.
Nous en faisons tous et parfois souvent. :p