Как проверить, на каком порту работает MySQL и может ли он быть подключен?



Я установил MySQL и даже вошел туда как пользователь.



но когда я пытаюсь подключить так:



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


Не работает. Не уверен, что оба должны работать, но по крайней мере один из них должен :)



Как я могу убедиться, что порт действительно 3306? Есть ли команда linux, чтобы увидеть это как-то?
Кроме того, есть ли более правильный способ попробовать его через url?

1640   13  

13 ответов:

найти слушателя на порту, сделайте следующее:

netstat -tln

вы должны увидеть строку, которая выглядит так, если MySQL действительно прослушивает этот порт.

tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      

порт 3306 является портом MySql по умолчанию.

для подключения вам просто нужно использовать любой клиент, который вам нужен, например, базовый клиент mysql.

база данных пользователей mysql-h localhost-u

или url-адрес, который интерпретируется вашим кодом библиотеки.

использование Mysql client:

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';

grep port /etc/mysql/my.cnf (по крайней мере, в debian/ubuntu работает )

или

netstat -tlpn | grep mysql

проверка

bind-адрес 127.0.0.1

in /etc / mysql / my.КНФ, чтобы увидеть возможные ограничения

netstat -tlpn

он покажет список что-то вроде ниже:

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

использовать в качестве корня для всех деталей. Элемент -t опция ограничивает выход TCP-соединениями,-l для прослушивания портов, -p содержит имя программы и -n показывает числовую версию порта вместо именованной версии.

таким образом, вы можете увидеть имя процесса и порт.

оба URL-адреса неверны-должно быть

jdbc:mysql://host:port/database

Я думал, что это само собой разумеется, но для подключения к базе данных с Java требуется драйвер JDBC. Вам понадобится драйвер MySQL JDBC.

может быть, можно подключить с использованием сокетов по протоколу TCP/ИС. Проверьте MySQL docs.

см http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html

обновление:

Я попытался telnet в MySQL (telnet ip 3306), но это не работает:

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

Я думаю, что это то, что вы имели в виду.

попробуйте использовать только -e (--execute) параметр:

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

заменить root по вашему "логину " и"паролю"

более простой подход для некоторых : Если вы просто хотите проверить, если MySQL находится на определенном порте, вы можете использовать следующую команду в терминале. Проверено на mac. 3306 это порт по умолчанию.

mysql --host=127.0.0.1 --port=3306

Если вы успешно войти в терминал оболочки MySQL, вы хорошо! Это выход, который я получаю при успешном входе в систему.

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-порт по умолчанию для mysql. Проверьте это с помощью:

netstat -nl|grep 3306

это должно дать такой результат:

tcp 0 0 127.0.0.1:3306 0.0.0.0: * слушайте

можно использовать

ps -ef | grep mysql

для меня ответ @joseluisq дал:

ошибка 1045( 28000): доступ запрещен для пользователя 'root'@'localhost' (используя пароль: нет)

но это сработало так:

$ mysql -u root@localhost  -e "SHOW GLOBAL VARIABLES LIKE 'PORT';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+

на mac os X есть два варианта. netstat или lsof

используя netstat не будет показывать процесс на Mac OS X. Поэтому с помощью netstat вы можете искать только по порту.
Используя lsof покажет имя процесса.

Я сделал следующее, Когда я столкнулся с конфликтами портов (контейнеры docker):

netstat -aln | grep 3306

выходы: tcp46 0 0 *.3306 *.* LISTEN

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

выходы: mysqld 60608 _mysql 31u IPv6 0x2ebc4b8d88d9ec6b 0t0 TCP *:3306 (LISTEN)

Я согласен с решением @bortunac. мой.conf является специфичным для mysql, в то время как netstat предоставит вам все порты прослушивания.

возможно, используйте оба, один для подтверждения того, какой порт установлен для mysql, а другой для проверки того, что система прослушивает через этот порт.

мой клиент использует CentOS 6.6 и я нашел мой.файл conf под /etc/, поэтому я использовал:

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

если вы находитесь в системе, где netstat недоступно (например, RHEL 7 и более поздние версии Debian) вы можете использовать ss, как показано ниже:

sudo ss -tlpn | grep mysql

и вы получите что-то вроде следующего вывода:

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

четвертый столбец Local Address:Port. Так что в этом случае Mysql прослушивает порт 3306, по умолчанию.

Comments

    Ничего не найдено.