Как проверить, на каком порту работает MySQL и может ли он быть подключен?
Я установил MySQL и даже вошел туда как пользователь.
но когда я пытаюсь подключить так:
http://localhost:3306
mysql://localhost:3306
Не работает. Не уверен, что оба должны работать, но по крайней мере один из них должен :)
Как я могу убедиться, что порт действительно 3306? Есть ли команда linux, чтобы увидеть это как-то?
Кроме того, есть ли более правильный способ попробовать его через url?
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-адрес, который интерпретируется вашим кодом библиотеки.
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: * слушайте
для меня ответ @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