¿Cómo probar en qué puerto se está ejecutando MySQL y si se puede conectar?


He instalado MySQL e incluso he iniciado sesión allí como usuario.

Pero cuando intento conectarme así:

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

Ninguna funciona. No estoy seguro si se supone que ambos funcionan, pero al menos uno de ellos debería :)

¿Cómo puedo asegurarme de que el puerto es realmente 3306? ¿Hay un comando de Linux para verlo de alguna manera? Además, ¿hay una forma más correcta de probarlo a través de una url?

Author: GeekedOut, 2011-05-03

13 answers

Para encontrar un receptor en un puerto, haga esto:

netstat -tln

Debería ver una línea que se vea así si mysql está escuchando en ese puerto.

tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      

El puerto 3306 es el puerto predeterminado de MySQL.

Para conectarse, solo tiene que usar cualquier cliente que necesite, como el cliente mysql básico.

Base de datos de usuarios Mysql-h localhost-u

O una url interpretada por el código de su biblioteca.

 192
Author: Keith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-06 05:58:47

Usando el cliente Mysql:

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
 120
Author: enagra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-20 10:01:41

grep port /etc/mysql/my.cnf ( al menos en debian/ubuntu funciona)

O

netstat -tlpn | grep mysql

Verificar

Bind-address 127.0.0.1

En /etc/mysql/my.cnf para ver posibles restricciones

 59
Author: bortunac,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-25 07:21:18
netstat -tlpn

Mostrará la lista algo como a continuación:

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

Use como root para todos los detalles. La opción -t limita la salida a conexiones TCP, -l para los puertos de escucha, -p enumera el nombre del programa y -n muestra la versión numérica del puerto en lugar de una versión con nombre.

De esta manera se puede ver el nombre del proceso y el puerto.

 30
Author: mPrinC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-15 13:08:59

Ambas URLs son incorrectas-deberían ser

jdbc:mysql://host:port/database

Pensé que era obvio, pero conectarse a una base de datos con Java requiere un controlador JDBC. Necesitará el controlador MySQL JDBC .

Tal vez pueda conectarse usando un socket a través de TCP/IP. Echa un vistazo a la MySQL docs .

Véase http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html

ACTUALIZACIÓN:

Traté de telnet en MySQL (telnet ip 3306), pero no funciona:

Http://lists.mysql.com/win32/253

Creo que esto es lo que tenías en mente.

 6
Author: duffymo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-05-03 02:26:18

Intente usar solo -e (--execute) opción:

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

Reemplace root por su "nombre de usuario"y" contraseña "

 6
Author: joseluisq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-07 19:57:43

Un enfoque más simple para algunos : Si solo desea verificar si MySQL está en un puerto determinado, puede usar el siguiente comando en terminal. Probado en mac. 3306 es el puerto predeterminado.

mysql --host=127.0.0.1 --port=3306

Si inicia sesión con éxito en el terminal shell de MySQL, ¡está bien! Esta es la salida que obtengo en un inicio de sesión exitoso.

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
Author: Monarch Wadia,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-08 17:12:12

3306 es el puerto predeterminado para mysql. Compruébalo con:

netstat -nl|grep 3306

Debería dar este resultado:

Tcp 0 0 127.0.0.1: 3306 0.0.0.0: * LISTEN

 5
Author: zygimantus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-04 09:21:43

Puede usar

ps -ef | grep mysql
 3
Author: user6250141,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-28 04:28:02

Para mí, la respuesta de @ joseluisq dio:

ERROR 1045 (28000): Acceso denegado para el usuario 'root'@'localhost' (usando contraseña: NO)

Pero funcionó de esta manera:

$ mysql -u root@localhost  -e "SHOW GLOBAL VARIABLES LIKE 'PORT';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
 2
Author: Jose J Melendez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-21 13:38:27

En un mac os X, hay dos opciones. netstat o lsof

Usando netstat no mostrará el proceso en Mac OS X. así que usando netstat solo puede buscar por puerto.
Usando lsof se mostrará el nombre del proceso.

Hice lo siguiente al encontrarme con conflictos de puertos (contenedores docker):

netstat -aln | grep 3306

Salidas: tcp46 0 0 *.3306 *.* LISTEN

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

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

 2
Author: toddcscar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-08 17:45:47

Estoy de acuerdo con la solución de @bortunac. mi.conf es específico de mysql, mientras que netstat le proporcionará todos los puertos de escucha.

Quizás use ambos, uno para confirmar cuál es el puerto establecido para mysql y el otro para verificar que el sistema está escuchando a través de ese puerto.

Mi cliente utiliza CentOS 6.6 y he encontrado el my.archivo conf bajo /etc/, así que usé:

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

 1
Author: mmmdearte,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-04 12:18:41

Si está en un sistema donde netstat no está disponible (por ejemplo, RHEL 7 y versiones más recientes de Debian) puede usar ss, como se muestra a continuación:

sudo ss -tlpn | grep mysql

Y obtendrás algo como lo siguiente para la salida:

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

La cuarta columna es Local Address:Port. Así que en este caso Mysql está escuchando en el puerto 3306, el predeterminado.

 1
Author: nelsonda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-15 17:51:54