J'ai installé MySQL et je me suis même connecté en tant qu'utilisateur.
Mais quand j'essaye de me connecter comme ça:
http://localhost:3306
mysql://localhost:3306
Ni fonctionne. Je ne sais pas si les deux sont censés fonctionner, mais au moins l'un d'entre eux devrait :)
Comment puis-je m'assurer que le port est bien 3306? Existe-t-il une commande linux pour le voir? Aussi, y a-t-il une façon plus correcte d'essayer via une URL?
Pour trouver un auditeur sur un port, procédez comme suit:
netstat -tln
Vous devriez voir une ligne qui ressemble à ceci si mysql écoute effectivement sur ce port.
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
Le port 3306 est le port par défaut de MySql.
Pour vous connecter, vous devez simplement utiliser le client souhaité, tel que le client mysql de base.
mysql -h localhost -u base de données utilisateur
Ou une URL interprétée par votre code de bibliothèque.
Utilisation du client Mysql:
mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
grep port /etc/mysql/my.cnf
(au moins dans les œuvres debian/ubuntu)
ou
netstat -tlpn | grep mysql
vérifier
bind-address 127.0.0.1
dans /etc/mysql/my.cnf pour voir les restrictions possibles
netstat -tlpn
Il montrera la liste quelque chose comme ci-dessous:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1393/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1859/master
tcp 0 0 123.189.192.64:7654 0.0.0.0:* LISTEN 2463/monit
tcp 0 0 127.0.0.1:24135 0.0.0.0:* LISTEN 21450/memcached
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 16781/mysqld
Utilisez comme racine pour tous les détails. L'option -t
limite la sortie à TCP connexions, -l
pour les ports d'écoute, -p
répertorie le nom du programme et -n
indique la version numérique du port au lieu d'une version nommée.
De cette façon, vous pouvez voir le nom du processus et le port.
Essayez uniquement d’utiliser l’option -e
(--execute
):
$ mysql -u root -proot -e "SHOW GLOBAL VARIABLES LIKE 'PORT';" (8s 26ms)
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
Remplacez root
par votre "nom d'utilisateur" et votre "mot de passe"
Les deux URL sont incorrectes - devraient être
jdbc:mysql://Host:port/database
Je pensais que cela allait de soi, mais la connexion à une base de données avec Java nécessite un pilote JDBC. Vous aurez besoin du pilote MySQL JDBC .
Peut-être que vous pouvez vous connecter en utilisant un socket sur TCP/IP. Découvrez le documentation MySQL .
Voir http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html
MISE À JOUR:
J'ai essayé de telnet en MySQL (telnet ip 3306
), mais cela ne fonctionne pas:
http://lists.mysql.com/win32/25
Je pense que c'est ce que vous aviez en tête.
Une approche plus simple pour certains: Si vous voulez juste vérifier si MySQL est sur un certain port, vous pouvez utiliser la commande suivante dans le terminal. Testé sur mac. 3306 est le port par défaut.
mysql --Host=127.0.0.1 --port=3306
Si vous vous connectez avec succès au terminal MySQL Shell, tout va bien! Ceci est la sortie que je reçois sur une connexion réussie.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9559
Server version: 5.6.21 Homebrew
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
3306 est le port par défaut pour mysql. Vérifiez-le avec:
netstat -nl|grep 3306
cela devrait donner ce résultat:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
vous pouvez utiliser
ps -ef | grep mysql
Sur un Mac OS X, il y a deux options. netstat
ou lsof
L'utilisation de netstat
n'affichera pas le processus sous Mac OS X. Par conséquent, vous ne pouvez utiliser netstat que par port.
Utiliser lsof
affichera le nom du processus.
J'ai agi comme suit alors que je rencontrais des conflits de ports (conteneurs Docker):
netstat -aln | grep 3306
Sorties: tcp46 0 0 *.3306 *.* LISTEN
Sudo lsof -i -P | grep -i "LISTEN" | grep -i 3306
Sorties: mysqld 60608 _mysql 31u IPv6 0x2ebc4b8d88d9ec6b 0t0 TCP *:3306 (LISTEN)
Pour moi, la réponse de @ joseluisq a donné:
ERREUR 1045 (28000): Accès refusé pour l'utilisateur 'root' @ 'localhost' (avec mot de passe: NO)
Mais cela a fonctionné de cette façon:
$ mysql -u root@localhost -e "SHOW GLOBAL VARIABLES LIKE 'PORT';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
Si vous êtes sur un système où netstat
n'est pas disponible (par exemple, RHEL 7 et les versions plus récentes de Debian), vous pouvez utiliser ss
, comme ci-dessous:
Sudo ss -tlpn | grep mysql
Et vous obtiendrez quelque chose comme ceci pour la sortie:
LISTEN 0 50 *:3306 *:* users:(("mysqld",pid=5307,fd=14))
La quatrième colonne est Local Address:Port
. Donc, dans ce cas, Mysql écoute sur le port 3306, le port par défaut.
Je suis d'accord avec la solution de @ bortunac. my.conf est spécifique à mysql alors que netstat vous fournira tous les ports d'écoute.
Peut-être utilisez-vous les deux, l'un pour confirmer le port défini pour mysql et l'autre pour vérifier que le système écoute via ce port.
Mon client utilise CentOS 6.6 et j'ai trouvé le fichier my.conf sous/etc /, alors j'ai utilisé:
grep port /etc/my.conf
(CentOS 6.6)