it-swarm.com.ru

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

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

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

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

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

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

130
GeekedOut

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

netstat -tln

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

tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      

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

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

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

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

196
Keith

Используя Mysql клиент:

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
131
enagra

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

или же

netstat -tlpn | grep mysql

проверить

bind-адрес 127.0.0.1

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

59
bortunac
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 показывает числовую версию порта вместо именованной версии.

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

30
mPrinC

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

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

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

7
joseluisq

Оба 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

Обновление:

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

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

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

6
duffymo

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

mysql --Host=127.0.0.1 --port=3306

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

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>
5
Monarch Wadia

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

netstat -nl|grep 3306

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

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN

5
zygimantus

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

ps -ef | grep mysql
3
don625

На 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)

2
toddcscar

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

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

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

$ mysql -u [email protected]  -e "SHOW GLOBAL VARIABLES LIKE 'PORT';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port          | 3306  |
+---------------+-------+
2
Jose J Melendez

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

1
nelsonda

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

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

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

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

1
mmmdearte