Я установил MySQL и даже зарегистрировался там как пользователь.
Но когда я пытаюсь подключиться так:
http://localhost:3306
mysql://localhost:3306
Ничего не работает. Не уверен, что обе они должны работать, но по крайней мере один из них должен:)
Как я могу убедиться, что порт действительно 3306? Есть ли команда linux, чтобы как-то это увидеть? Кроме того, есть ли более правильный способ попробовать его с помощью URL?
Чтобы найти слушателя на порту, сделайте следующее:
netstat -tln
Вы должны увидеть строку, которая выглядит так, если mysql действительно прослушивает этот порт.
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
Порт 3306 - это порт по умолчанию MySql.
Чтобы подключиться, вам просто нужно использовать любой клиент, который вам нужен, например, базовый клиент mysql.
mysql -h localhost -u пользовательская база данных
Или URL, который интерпретируется кодом вашей библиотеки.
Использование клиента Mysql:
mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
grep port /etc/mysql/my.cnf
(по крайней мере, в debian/ubuntu работает)
или
netstat -tlpn | grep mysql
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
показывает числовую версию порта вместо именованной версии.
Таким образом вы можете увидеть имя процесса и порт.
Оба 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
Я думаю, это то, что вы имели в виду.
Попробуйте использовать параметр -e
(--execute
):
$ mysql -u root -proot -e "SHOW GLOBAL VARIABLES LIKE 'PORT';" (8s 26ms)
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
Замените root
вашими "именем пользователя" и "паролем"
3306 - это порт по умолчанию для mysql. Проверьте это:
netstat -nl|grep 3306
он должен дать этот результат:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
Более простой подход для некоторых: если вы просто хотите проверить, находится ли 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>
вы можете использовать
ps -ef | grep mysql
Если вы находитесь в системе, где 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 по умолчанию.
Я согласен с решением @bortunac. my.conf специфичен для mysql, в то время как netstat предоставит вам все порты прослушивания.
Возможно, используйте оба варианта: один, чтобы подтвердить, какой порт установлен для mysql, а другой - проверить, что система прослушивает этот порт.
Мой клиент использует CentOS 6.6, и я нашел файл my.conf под /etc/, поэтому я использовал:
grep port /etc/my.conf
(CentOS 6.6)