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

112

Я установил MySQL и даже зарегистрировался там как пользователь.

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

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

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

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

Теги:

11 ответов

162
Лучший ответ

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

netstat -tln

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

tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      

Порт 3306 - это порт по умолчанию MySql.

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

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

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

  • 2
    Что это значит, когда вместо 127.0.0.1:3306 написано 0.0.0.0:3306?
  • 1
    @mbmast the 127 ... означает прослушивание только на локальном хосте (не доступно извне). 0.0.0.0 означает «все интерфейсы» и поэтому (обычно) виден снаружи.
Показать ещё 4 комментария
113

Использование клиента Mysql:

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
  • 0
    ОШИБКА 1146 (42S02): Таблица «performance_schema.global_variables» не существует
54

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

или

netstat -tlpn | grep mysql
  • 0
    это решило мою проблему
28
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

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

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

  • 1
    У меня не сработало - я получил "tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN -"
  • 1
    это намного лучше, так как показывает название
Показать ещё 1 комментарий
5

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

jdbc:mysql://host:port/database

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

Возможно, вы можете подключиться через сокет через TCP/IP. Ознакомьтесь с Документами MySQL.

См. 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

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

  • 0
    Похоже, что он не работал, когда я попробовал это в моем коде :( Также, когда я вставил его в браузер, Firefox сказал, что не может открыть такую вещь. Где / как я мог попробовать это? - Спасибо!
  • 0
    Да, вы не можете открыть его в браузере. Вам нужен драйвер JDBC MySQL и код Java.
Показать ещё 4 комментария
4

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

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

Замените root вашими "именем пользователя" и "паролем"

4

3306 - это порт по умолчанию для mysql. Проверьте это:

netstat -nl|grep 3306

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

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN

4

Более простой подход для некоторых: если вы просто хотите проверить, находится ли 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>
3

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

ps -ef | grep mysql
0

Если вы находитесь в системе, где 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 по умолчанию.

0

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

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

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

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

Сообщество Overcoder
Наверх
Меню