MySQL connexion à distance [pas comme d'habitude]
Je ne suis pas arriver à obtenir l'accès à mysql externe.
Je pense que c'est mysql ou pare-feu des trucs ou des privilèges au sein de la base de données mysql.
J'ai déjà essayé de faire des étapes qui sont sur internet. Je vais mettre le processus étape-par-étape pour donner un exemple de ce que je suis en train de faire et de servir comme un tutoriel pour un autre peuple qui a ce même problème:
Je suis en utilisant:
-ubuntu server 12.04
-mysql-server5.5
-there is NO hardware firewall just software one
1 - tout d'Abord j'ai installé mysql avec:
sudo apt-get install mysql-server
2 - j'ai changé le mot de passe root par:
sudo /etc/init.d/mysql stop
sudo mysqld --skip-grant-tables &
mysql -u root mysql
UPDATE user SET Password=PASSWORD('MYPASSWORD') WHERE User='root'; FLUSH PRIVILEGES; exit;
3 - je donne TOUS les PRIVILÈGES à la racine de tout ip:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
4 - Après j'ai édité mon.cnf
sudo nano /etc/mysql/my.cnf
J'ai commenté les lignes, comme indiqué ci-dessous:
#skip-external-locking
#bind-address = 127.0.0.1
5 - j'ai édité le iptables pour autoriser MySql 3306:
iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
maintenant taper netstat -ant:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:10000 0.0.0.0:* LISTEN
tcp 0 0 66.123.173.170:53 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN
tcp 0 0 66.123.173.170:22 189.32.2.232:49167 ESTABLISHED
tcp 0 336 66.123.173.170:22 189.32.2.232:49654 ESTABLISHED
tcp6 0 0 :::110 :::* LISTEN
tcp6 0 0 :::143 :::* LISTEN
tcp6 0 0 :::8080 :::* LISTEN
tcp6 0 0 :::21 :::* LISTEN
tcp6 0 0 :::53 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:953 :::* LISTEN
tcp6 0 0 :::25 :::* LISTEN
tcp6 0 0 :::993 :::* LISTEN
tcp6 0 0 :::995 :::* LISTEN
tcp6 0 0 127.0.0.1:8005 :::* LISTEN
Voir que le port 3306 est ouvert! Suis-je le droit?
6 - j'ai redémarré le serveur mysql:
sudo service mysql start
J'ai tapé:
service mysql status
résultat:
mysql start/running, process 20757
7 - j'ai essayé de vous connecter au serveur:
mysql -h 66.123.173.170 -u root -p
J'ai eu cette erreur:
ERREUR de 2003 (HY000): can't connect to MySQL server on '66.123.173.170' (111)
Quand je fais:
mysql -h 127.0.0.1 -u root -p
Il fonctionne ouvert MySQL> terminal
8 - DOUTE: voyez-vous quelque chose de mal avec ce processus?
OBS: à l'étape 4, j'ai aussi essayé de mettre le lien de l'adresse de
offre-address = 0.0.0.0
mais elle ne résout pas le problème.
9 - DOUTE: Si je désactive le MySQL avec: service mysql stop
alors, puis-je accéder au pare-feu localement avec mysql -h 127.0.0.1 -u root -p ?
Je l'ai fait et j'ai pu me connecter même avec mysql arrêté/en attente (c'est le statut donné après l'arrêt et retrieveing statut de MySQL).
+1 pour fournir autant d'informations dans votre question. Du bon travail.
OriginalL'auteur felipe | 2012-08-10
Vous devez vous connecter pour publier un commentaire.
Reprise de la solution:
J'ai tué le mysqld qui tenait le port 3306 et redémarré.
Je pense que c'est un bug ou quelque chose lié vérifier étape par étape ce que j'ai fait:
1 - a Créé un programme pour se connecter sur 3306
Je crée d'abord un simple programme en Java pour s'assurer il n'y avait pas de problème avec mon pare-feu. Le programme vous suffit d'ouvrir un port 3306 avec connexion TCP en 2 minutes juste pour le test, le programme:
2 - Arrêté le service mysql
Avant d'exécuter le programme, j'ai arrêté le service mysql:
ou il peut être fait avec:
3 - Commencé Mon programme avec java PortMysqlTest
Mon programme (PortMysqlTest) lève une exception en disant l'adresse/port déjà utilisé par mysqld!
Surprise? Pour autant que je sais avec le service mysql arrêté le port doit être libre. Suis-je le droit? (Je ne suis pas sûr si quelqu'un peut répondre à cette...)
4 - j'ai cherché pour l'application PID a été à l'aide de l'adresse/port:
la réponse:
5 - j'ai tué le processus avec:
OBS, si vous ne savez pas quoi faire tuer:
6736 est le processus qui tenait le port, j'ai obtenu ce numéro à l'étape 4, 6736/mysqld
6 - Maintenant, je lance mon programme:
java PortMysqlTest et connecté avec telnet (telnet 66.123.173.170 3306) externaly et il a travaillé!
De sorte que le problème n'était pas le pare-feu, parce que je pourrais connecter de l'extérieur de la machine 66.123.173.170.
7 - a Commencé le service mysql de nouveau:
(J'ai attendu 2 minutes pour que mon programme ne s'arrêter et libérer le port 3306) et a commencé le service mysql à tester à nouveau, avec:
ou
8 - je ne l'ai branché en externe avec telnet:
et travaillé!!!
Après j'ai essayé de vous connecter à mysql avec:
et travaillé!!!
Conclusion:
Je pense qu'il y a eu un bug avec mon installation de MySql;
ou quelque chose (je ne sais pas ce que c'est), lors du redémarrage de mysql mysql n'est pas obtenir la configuration de:
ou
J'espère que cela aide quelqu'un d'autre.
Excellent. A parfaitement fonctionné. J'ai essayé pendant des heures. Tuer mysql a été la clé!
vous êtes Dieu! Merci monsieur! passé 3 heures à essayer de comprendre le problème :(((
C'est génial!! J'ai été la recherche de ce pendant des heures...
OriginalL'auteur felipe
Votre netstat sortie montre qu'il n'est pas ouvert pour les connexions externes, elle doit montrer
0.0.0.0
de là, au lieu de127.0.0.1
(qui est de bouclage, pas de local en tant que tel).Vous avez probablement besoin d'ajouter un autre
bind-address
à votre mysql config (et n'oubliez pas de redémarrer le service).Essayer
bind-address = *
ou de votre NIC ip (
66.123.173.170
) peut-être.OriginalL'auteur lynks
Votre besoin de jeu de votre bind-address dans mon.cnf 0.0.0.0, pas simplement en commentaire la ligne.
Comme une note de côté, vous ne devriez probablement pas permettre l'accès à la racine de toutes les adresses IP que vous dites que vous l'avez configuré. Je voudrais limiter la racine à la machine locale seulement.
Donc, vous essayez d'utiliser l'adresse IP externe de 66.123.173.170 pour ouvrir MySQL à partir de la machine locale?
oui, je suis sur un externe de la machine en essayant de se connecter à 66.123.173.170.
OriginalL'auteur Mike Brant
Par défaut de MySQL écoute sur localhost. Vous devez le configurer pour fonctionner sur votre interface ou vous pouvez utiliser 0.0.0.0 adresse à lier.
OriginalL'auteur Satish