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

#mysql #linux #ubuntu

#mysql #linux #ubuntu

Вопрос:

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

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

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

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

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

Ответ №1:

Чтобы найти прослушиватель на порту, сделайте это:

 netstat -tln
  

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

 tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      
  

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

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

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

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

Комментарии:

1. Что это значит, когда вместо 127.0.0.1:3306 написано 0.0.0.0:3306?

2. @mbmast the 127… означает прослушивание только на локальном хосте (недоступном извне). 0.0.0.0 означает «все интерфейсы» и, следовательно, (обычно) виден извне.

3. Я думал, что для внешнего отображения это должен быть собственный IP-адрес компьютера, и что 0.0.0.0 означает, что сервис недоступен ниоткуда. Я что-то не так понимаю? У меня есть окно под управлением MySQL, брандмауэр имеет 3306 открытых с любого IP-адреса, но MySQL отказывается от подключения, я думал, потому что в настоящее время MySQL прослушивает 0.0.0.0.

4. Следует объединить это с ответом @boortunac, который ссылается на -p параметр. Добавление процесса (ов) действительно помогает сделать эту информацию более полезной.

5. @JBeck три флага, для Linux. TCP, прослушиватели, без поиска имени. смотрите man netstat .

Ответ №2:

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

 mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
  

Комментарии:

1. ОШИБКА 1146 (42S02): таблица ‘performance_schema.global_variables’ не существует

2. Гораздо лучше, если используется SHOW GLOBAL VARIABLES LIKE '%port%';

Ответ №3:

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

или

 netstat -tlpn | grep mysql
  

или

 mysql -u user_name -puser_pass -e "SHOW variables LIKE 'port';"
  

проверить

bind-адрес 127.0.0.1

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

Ответ №4:

 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: * ПРОСЛУШИВАНИЕ — »

Ответ №5:

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

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

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

Ответ №6:

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

Ответ №7:

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

 netstat -nl|grep 3306
  

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

tcp 0 0 127.0.0.1:3306 0.0.0.0:* ПРОСЛУШАТЬ

Ответ №8:

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

 jdbc:mysql://host:port/database
  

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

Возможно, вы можете подключиться, используя сокет через 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

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

Комментарии:

1. Похоже, что это не сработало, когда я попробовал это в своем коде : (Также, когда я вставил это в браузер, Firefox сказал, что он не может открыть такую вещь. Где / как я мог бы это попробовать? — Спасибо!

2. Да, вы не можете открыть его в браузере. Вам нужен драйвер MySQL JDBC и Java-код.

3. это только в том случае, если вы используете Java.

4. Я пытаюсь настроить его с помощью Ruby on Rails через файл database.yml. Но на самом деле мне просто нужен был номер порта.

5. На самом деле это не отвечает на вопрос.

Ответ №9:

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

ОШИБКА 1045 (28000): пользователю ‘root’ @’localhost’ отказано в доступе (использование пароля: НЕТ)

Но это сработало таким образом:

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

Ответ №10:

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

 ps -ef | grep mysql
  

Ответ №11:

В 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)

Ответ №12:

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

Ответ №13:

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

 lsof -i -n -P | grep mysql
mysqld    1556 prince   10u  IPv4 0x6ad3fd78a9051969      0t0  TCP 127.0.0.1:3306 (LISTEN)
  

Ответ №14:

Я согласен с решением @boortunac. my.conf зависит от mysql, в то время как netstat предоставит вам все прослушивающие порты.

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

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

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