it-swarm.com.de

Wie kann man testen, auf welchem ​​Port MySQL läuft und ob eine Verbindung hergestellt werden kann?

Ich habe MySQL installiert und mich dort sogar als Benutzer angemeldet.

Aber wenn ich versuche, mich so zu verbinden:

http://localhost:3306
mysql://localhost:3306

Beides funktioniert nicht. Ich bin mir nicht sicher, ob beide funktionieren sollen, aber mindestens einer sollte funktionieren :)

Wie kann ich sicherstellen, dass der Port tatsächlich 3306 ist? Gibt es einen Linux-Befehl, um es irgendwie zu sehen? Gibt es auch eine korrektere Möglichkeit, es über eine URL zu versuchen?

130
GeekedOut

So finden Sie einen Listener an einem Port:

netstat -tln

Sie sollten eine Zeile sehen, die so aussieht, wenn mysql tatsächlich diesen Port abhört.

tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      

Port 3306 ist der Standardport von MySQL.

Um eine Verbindung herzustellen, müssen Sie nur den gewünschten Client verwenden, z. B. den grundlegenden MySQL-Client.

mysql -h localhost -u Benutzerdatenbank

Oder eine URL, die von Ihrem Bibliothekscode interpretiert wird.

196
Keith

Verwenden des MySQL-Clients:

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

grep port /etc/mysql/my.cnf (zumindest in Debian/Ubuntu)

oder

netstat -tlpn | grep mysql

überprüfen

bindeadresse 127.0.0.1

in /etc/mysql/my.cnf finden Sie mögliche Einschränkungen

60
bortunac
netstat -tlpn

Die folgende Liste wird angezeigt:

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

Verwenden Sie als root für alle Details. Das -t Option begrenzt die Ausgabe auf TCP Verbindungen, -l zum Abhören von Ports, -p listet den Programmnamen und -n zeigt die numerische Version des Ports anstelle einer benannten Version.

Auf diese Weise können Sie den Prozessnamen und den Port sehen.

30
mPrinC

Versuchen Sie es nur mit -e (--execute) Möglichkeit:

$ mysql -u root -proot -e "SHOW GLOBAL VARIABLES LIKE 'PORT';"                                                                                                       (8s 26ms)
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+

Ersetzen Sie root durch Ihren "Benutzernamen" und Ihr "Passwort"

7
joseluisq

Beide URLs sind falsch - sollte sein

jdbc:mysql://Host:port/database

Ich dachte, es wäre selbstverständlich, aber für die Verbindung mit einer Datenbank mit Java benötigt man einen JDBC-Treiber. Sie benötigen den MySQL JDBC-Treiber .

Möglicherweise können Sie eine Verbindung über einen Socket über TCP/IP herstellen. Check out the MySQL docs .

Siehe http://dev.mysql.com/doc/refman/5.0/de/connector-j-reference-configuration-properties.html

AKTUALISIEREN:

Ich habe versucht, in MySQL (telnet ip 3306), aber es funktioniert nicht:

http://lists.mysql.com/win32/25

Ich denke, das ist es, was Sie im Sinn hatten.

6
duffymo

Ein einfacherer Ansatz für einige: Wenn Sie nur überprüfen möchten, ob sich MySQL auf einem bestimmten Port befindet, können Sie den folgenden Befehl im Terminal verwenden. Getestet auf dem Mac. 3306 ist der Standardport.

mysql --Host=127.0.0.1 --port=3306

Wenn Sie sich erfolgreich beim MySQL Shell-Terminal anmelden, sind Sie gut! Dies ist die Ausgabe, die ich bei einer erfolgreichen Anmeldung erhalte.

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 ist der Standardport für MySQL. Überprüfen Sie es mit:

netstat -nl|grep 3306

es sollte folgendes Ergebnis geben:

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN

5
zygimantus

sie können verwenden

ps -ef | grep mysql
3
don625

Auf einem Mac OS X gibt es zwei Optionen. netstat oder lsof

Wenn Sie netstat verwenden, wird der Vorgang unter Mac OS X nicht angezeigt. Mit netstat können Sie daher nur nach Port suchen.
Mit lsof wird der Prozessname angezeigt.

Ich habe Folgendes getan, als ich auf Portkonflikte gestoßen bin (Docker-Container):

netstat -aln | grep 3306

Ausgaben: tcp46 0 0 *.3306 *.* LISTEN

Sudo lsof -i -P | grep -i "LISTEN" | grep -i 3306

Ausgänge: mysqld 60608 _mysql 31u IPv6 0x2ebc4b8d88d9ec6b 0t0 TCP *:3306 (LISTEN)

2
toddcscar

Für mich ergab die Antwort von @ joseluisq:

FEHLER 1045 (28000): Zugriff für Benutzer 'root' @ 'localhost' verweigert (mit Passwort: NEIN)

Aber es hat so funktioniert:

$ mysql -u [email protected]  -e "SHOW GLOBAL VARIABLES LIKE 'PORT';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
2
Jose J Melendez

Wenn Sie sich auf einem System befinden, auf dem netstat nicht verfügbar ist (z. B. RHEL 7 und neuere Debian-Versionen), können Sie ss wie folgt verwenden:

Sudo ss -tlpn | grep mysql

Für die Ausgabe erhalten Sie ungefähr Folgendes:

LISTEN     0      50        *:3306        *:*        users:(("mysqld",pid=5307,fd=14))

Die vierte Spalte ist Local Address:Port. In diesem Fall überwacht Mysql also standardmäßig Port 3306.

1
nelsonda

Ich stimme der Lösung von @ bortunac zu. my.conf ist mysql-spezifisch, während netstat alle Listening-Ports zur Verfügung stellt.

Verwenden Sie möglicherweise beide, um zu bestätigen, welcher Port für MySQL festgelegt ist, und um zu überprüfen, ob das System über diesen Port empfangsbereit ist.

Mein Client verwendet CentOS 6.6 und ich habe die my.conf-Datei unter/etc/gefunden, also habe ich Folgendes verwendet:

grep port /etc/my.conf (CentOS 6.6)

1
mmmdearte