¿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?
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.
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';
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
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.
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.
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 "
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>
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
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
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 |
+---------------+-------+
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)
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)
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.
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