如何测试运行MySQL的端口以及是否可以连接?

时间:2011-05-03 01:44:08

标签: mysql linux ubuntu

我已安装MySQL,甚至以用户身份登录。

但是当我尝试这样连接时:

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

两者都不起作用。不确定两者是否应该起作用,但至少其中一个应该:)

如何确保端口确实是3306?是否有linux命令以某种方式看到它? 另外,有没有更正确的方法通过网址尝试?

13 个答案:

答案 0 :(得分:195)

要在端口上查找侦听器,请执行以下操作:

netstat -tln

如果mysql确实正在侦听该端口,你应该会看到一条如下所示的行。

tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      

端口3306是MySql的默认端口。

要进行连接,您只需使用所需的任何客户端,例如基本的mysql客户端。

  

mysql -h localhost -u用户数据库

或由您的图书馆代码解释的网址。

答案 1 :(得分:130)

使用Mysql客户端:

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';

答案 2 :(得分:59)

grep port /etc/mysql/my.cnf(至少在debian / ubuntu中有效)

netstat -tlpn | grep mysql

验证

  

bind-address 127.0.0.1

在/etc/mysql/my.cnf中查看可能的限制

答案 3 :(得分:30)

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显示端口的数字版本而不是命名版本

通过这种方式,您可以看到进程名称和端口。

答案 4 :(得分:7)

仅使用-e--execute)选项:

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

root替换为您的"用户名"和"密码"

答案 5 :(得分:6)

两个网址都不正确 - 应该是

jdbc:mysql://host:port/database

我认为不言而喻,但使用Java连接到数据库需要JDBC驱动程序。您需要MySQL JDBC driver

也许您可以通过TCP / IP使用套接字进行连接。查看MySQL docs

请参阅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

我认为这就是你的想法。

答案 6 :(得分:5)

一些更简单的方法:如果您只想检查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>

答案 7 :(得分:5)

3306是mysql的默认端口。检查一下:

netstat -nl|grep 3306

它应该给出这个结果:

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN

答案 8 :(得分:3)

你可以使用

ps -ef | grep mysql

答案 9 :(得分:2)

对我来说,@ joseluisq的答案产生了:

  

ERROR 1045(28000):用户'root'@'localhost'拒绝访问(使用密码:NO)

但它的工作方式如下:

structure(list(X1 = c("MMSE_natekenen_file_H3", "CCI_H1.HIVpositief_Score_6", "score_chair_sit_and_reach_H2_9", "SPPB_score_test3_H2_4", "IMP5_BIA_H2_7", "commando_H3.Papier_in_rechterhand_nemen","SNAQ_3_P2","DEMMI_7_H2_6","Monocyten_medisch_dossier_H1_2","FAT_BIA_H2_7","SW_BIA_H2_6","vision_P3","DEMMI_8_H2_9","shortness_of_breath_H2_8","GDS_2_P3")), .Names = "X1", row.names = c(NA, -15L), class = c("tbl_df","tbl", "data.frame"))

答案 10 :(得分:2)

在mac os X上,有两个选项。 netstatlsof

使用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)

答案 11 :(得分:1)

我同意@ bortunac的解决方案。 my.conf是特定于mysql的,而netstat将为您提供所有侦听端口。

也许同时使用两者,一个用于确认哪个是为mysql设置的端口,另一个用于检查系统是否正在侦听该端口。

我的客户端使用CentOS 6.6,我在/ etc /下找到了my.conf文件,所以我使用了:

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

答案 12 :(得分:1)

如果您所在的系统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,默认值。