Как проверить, на каком порту запущен mysql

69

На моем Windows Dev Box MySQL работает на порт 3306

Как я могу проверить, какой порт работает на Unix-сервере, на который я должен загрузить приложение.

Анкур
источник
Это зависит от того, как вы можете получить доступ к серверу. Есть ли у вас доступ по ssh, доступ к клиенту mysql или какой-либо веб-интерфейс, например phpMyAdmin?
Джонфанкок
SSH доступ - через замазку
Ankur
Это общий хост? Если это так, на нем могут работать несколько экземпляров MySQL, каждый на своем порте.
Джон Гарденье
Нет, это настройка виртуальной машины только для меня, так что есть только один экземпляр.
Анкур

Ответы:

87

я сделал

mysql> ПОКАЗАТЬ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ, КАК 'ПОРТ';

И это указывало, что я использовал port 3306и что мой поиск ошибки продолжается.

Анкур
источник
1
Эта команда помогает узнать все глобальные переменные. mysql> ПОКАЗАТЬ ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ;
Арун211
38

Лучший способ на самом деле знать , что приложение слушает , какой интерфейс и на какой порт использоватьnetstat

Вы можете сделать это как root :

netstat -tlnp

Он перечислит все службы прослушивания, как это:

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:3306            0.0.0.0:*               LISTEN      25934/mysqld
tcp6       0      0 :::22                   :::*                    LISTEN      7964/dropbear

В последнем столбце показано, что mysqld привязал себя к порту 3306, прослушивающему все интерфейсы.

На самом деле, это работает для всего, не только для MySQL. Вы также можете использовать его без сокетов TCP.

sybreon
источник
2
флаг -p работает только в Linux, afaik. (определенно не Mac OS X, по крайней мере)
jdizzle
1
думаю, что вы застряли с этим lsof -i TCP.
Sybreon
Команда Linux и команда windows немного различаются. Для Windows вы должны быть повышены, и замените p на ab
IceMage
6

Войдите через терминал в MySQL:

mysql -u root

и затем введите следующее в приглашении mysql:

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';

Это сработало для меня.

IgnacioAinol
источник
4

MySQL по умолчанию использует порт 3306, если вы не укажете другую строку в /etc/my.cnfфайле конфигурации.

Если ваш не /etc/my.cnfсодержит что-то вроде

[mysqld]
port = 3308

Тогда весьма вероятно, что вы используете порт по умолчанию.

Дейв Чейни
источник
4

Если вы действительно хотите подтвердить, что он работает на порту, вы можете подключиться к нему через telnet, пока процесс запущен следующим образом:

telnet localhost 3306

Вы увидите сообщение о том, что вы подключены к mySQL.

Вы можете найти PID процесса, используя ps и grep:

ps -ef | grep mysql

и затем поместите этот pid в lsof, чтобы распечатать все дескрипторы открытого файла. Вы найдете порт, к которому привязан процесс, вверху.

Alex
источник
3

Альтернативный метод к уже перечисленным (и не такой хороший, но эй, он работает).

prompt>lsof -n | grep 'mysql.*TCP'
mysqld     1564     mysql   10u     IPv4            3246456       0t0        TCP *:mysql (LISTEN)
prompt>cat /proc/1564/net/tcp
  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
   0: 11AC11AC:0035 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 14299 1 ffff88012a429a00 299 0 0 2 -1
   1: 017AA8C0:0035 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 13871 1 ffff880129962080 299 0 0 2 -1
   2: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 12596 1 ffff880129960000 299 0 0 2 -1
   3: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 11459 1 ffff88012a429380 299 0 0 2 -1
   4: 00000000:8D58 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 11315 1 ffff88012a428d00 299 0 0 2 -1
   5: 00000000:0019 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 12940 1 ffff880129960680 299 0 0 2 -1
   6: 0100007F:177A 00000000:0000 0A 00000000:00000000 00:00000000 00000000   500        0 3600557 1 ffff8800672dee80 299 0 0 2 -1
   7: 0100007F:177B 00000000:0000 0A 00000000:00000000 00:00000000 00000000   500        0 3603871 1 ffff88012a42ee80 299 0 0 2 -1
   8: 0100007F:177C 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 3608169 1 ffff88012a42f500 299 0 0 2 -1
   9: 0100007F:177D 00000000:0000 0A 00000000:00000000 00:00000000 00000000   500        0 3615687 1 ffff88012a42e180 299 0 0 2 -1
  10: 0100007F:00C7 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 3608454 1 ffff8800672db400 299 0 0 2 -1
  11: 00000000:0CEA 00000000:0000 0A 00000000:00000000 00:00000000 00000000    27        0 3246456 1 ffff8800672dba80 299 0 0 2 -1
  12: 00000000:024B 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 12944 1 ffff880129961380 299 0 0 2 -1
  13: 00000000:006F 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 10657 1 ffff88012a428680 299 0 0 2 -1
  14: 00000000:01D1 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 12942 1 ffff880129960d00 299 0 0 2 -1
  15: 0100007F:1DD2 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 3631325 1 ffff8800672da700 299 0 0 2 -1
  16: 0100007F:990B 0100007F:177B 01 00000000:00000000 02:0002F5D8 00000000   500        0 3610110 2 ffff8800672df500 20 3 26 4 19
  17: 0100007F:177B 0100007F:990C 01 00000000:00000000 00:00000000 00000000   500        0 3610124 1 ffff88012a42d480 20 3 0 5 -1
  18: 0100007F:990D 0100007F:177B 01 00000000:00000000 02:00031144 00000000   500        0 3610142 2 ffff8800672d9380 20 3 0 5 -1
  19: 0100007F:177B 0100007F:990B 01 00000000:00000000 00:00000000 00000000   500        0 3610111 1 ffff8800672dc100 21 3 29 4 -1
  20: 0100007F:177B 0100007F:9949 01 00000000:00000000 00:00000000 00000000   500        0 3611026 1 ffff8800672dad80 20 3 0 5 -1
  21: 0100007F:9912 0100007F:177B 01 00000000:00000000 02:0005D3D3 00000000   500        0 3610249 2 ffff8800672de180 20 3 0 3 -1
  22: 0100007F:177B 0100007F:990D 01 00000000:00000000 00:00000000 00000000   500        0 3610143 1 ffff8800672de800 20 3 1 5 -1
  23: 11AC11AC:0016 480111AC:9074 01 00000000:00000000 02:0002BCFF 00000000     0        0 3608096 2 ffff88012a428000 20 3 1 5 16
  24: 11AC11AC:0016 480111AC:8485 01 00000000:00000000 02:0005819F 00000000     0        0 3615610 2 ffff88012a42c100 20 3 1 5 -1
  25: 0100007F:177B 0100007F:9923 01 00000000:00000000 00:00000000 00000000   500        0 3610494 1 ffff88012a42ce00 20 3 0 5 -1
  26: 0100007F:990F 0100007F:177B 01 00000000:00000000 02:0003117F 00000000   500        0 3610209 2 ffff8800672dd480 20 3 0 5 -1
  27: 0100007F:9949 0100007F:177B 01 00000000:00000000 02:0005D3D3 00000000   500        0 3611025 2 ffff8800672ddb00 20 3 0 3 -1
  28: 0100007F:90CF 0100007F:177B 01 00000000:00000000 02:00004637 00000000   500        0 4049147 2 ffff8800672dc780 20 3 1 5 -1
  29: 11AC11AC:0016 480111AC:C273 01 00000000:00000000 02:00021D06 00000000     0        0 3600488 4 ffff88012a42a700 20 6 31 4 34
  30: 0100007F:177B 0100007F:90CF 01 00000000:00000000 00:00000000 00000000   500        0 4049148 1 ffff8800672d8680 20 3 0 5 -1
  31: 11AC11AC:0016 480111AC:C7C3 01 00000000:00000000 02:00093A92 00000000     0        0 3603799 2 ffff88012a42ba80 20 3 26 5 31
  32: 0100007F:177B 0100007F:9912 01 00000000:00000000 00:00000000 00000000   500        0 3610250 1 ffff8800672da080 20 3 0 5 -1
  33: 0100007F:177B 0100007F:990F 01 00000000:00000000 00:00000000 00000000   500        0 3610210 1 ffff8800672d9a00 20 3 1 5 -1
  34: 0100007F:990C 0100007F:177B 01 00000000:00000000 02:00031147 00000000   500        0 3610123 2 ffff88012a42ad80 20 3 1 5 -1
  35: 0100007F:9923 0100007F:177B 01 00000000:00000000 02:0005D3D3 00000000   500        0 3610493 2 ffff88012a42e800 20 3 16 3 -1
prompt>grep '^mysql:' /etc/passwd
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
prompt>

Строка uid 27 - это сокет прослушивания процесса mysqld, а 0CEA является шестнадцатеричным для 3306.

hlovdal
источник
1

Хорошо, это работает на моем компьютере с Linux, но я не уверен, что Unix будет хранить файл cnf в том же месте.

кошка /etc/mysql/my.cnf | grep 'port'

jonfhancock
источник
0

Вы можете попытаться отследить журнал MySQL .... попробуйте запустить

shell$> tail -f /var/log/mysql/mysqld.log

при перезапуске MySQL по

service mysqld stop/start

на другом ssh-терминале / вкладке. Порт, на котором его прослушивание будет отображаться в журнале следующим образом:

Version: '5.7.21-log'  socket: '/tmp/mysql.sock'  port: 3307  MySQL Community Server (GPL)
Аншуман Банерджи
источник
-2

Приведенные выше команды не помогли мне в моем mac.

Я использовал, lsof -i TCP:3306чтобы выяснить процесс mysqld. который на самом деле слушал в * .mysql

Прасат Раджан
источник
1
Эта команда может дать вам PID, если номер порта по умолчанию 3306. Оригинальный плакат (OP) имел номер не по умолчанию.
Кубанчик
Я дал образец .. Вы можете заменить 3306 с любым другим портом. В этом случае его 3307.Command все же прав.
Прасат Раджан
1
Правильный способ использует: sudo lsof -i :3306.
Бруно Уего