web-dev-qa-db-fra.com

Comment tester le port utilisé par MySQL et savoir s'il peut être connecté?

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?

130
GeekedOut

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.

196
Keith

Utilisation du client Mysql:

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
132
enagra

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

60
bortunac
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.

30
mPrinC

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"

7
joseluisq

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.

6
duffymo

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>
5
Monarch Wadia

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

5
zygimantus

vous pouvez utiliser

ps -ef | grep mysql
3
don625

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)

2
toddcscar

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  |
+---------------+-------+
2
Jose J Melendez

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.

1
nelsonda

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)

1
mmmdearte