如何测试运行在哪个端口上的 MySQL,以及它是否可以连接到?

我已经安装了 MySQL,甚至以用户的身份登录了那里。

但是当我试着这样联系的时候:

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

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

我怎样才能确定港口的确是3306?是否有一个 linux 命令以某种方式看到它? 还有,有没有更正确的方法来尝试通过一个网址?

494305 次浏览

两个 URL 都不正确-应该是

jdbc:mysql://host:port/database

我认为这是不言而喻的,但是用 Java 连接数据库需要 JDBC 驱动程序。你需要 MySQL JDBC 驱动程序

也许你可以使用 TCP/IP 上的套接字连接。

参见 http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html

更新:

我试过远程登录 MySQL (telnet ip 3306) ,但是没有用:

Http://lists.mysql.com/win32/253

我想这就是你想要的。

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

netstat -tln

如果 mysql 确实在监听该端口,那么您应该看到类似于下面的行。

tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN

端口3306是 MySql 的默认端口。

要连接,您只需使用您需要的任何客户机,比如基本的 mysql 客户机。

Mysql-h localhost-u 用户数据库

或者由库代码解释的 URL。

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

或者

netstat -tlpn | grep mysql

或者

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

核实

绑定地址127.0.0.1

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

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

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

对于某些人来说,一种更简单的方法是: 如果您只是想检查 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>

使用 Mysql 客户端:

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';

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

也许同时使用两者,一个用于确认 mysql 的端口集,另一个用于检查系统是否正在通过该端口监听。

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

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

3306是 mysql 的默认端口,请使用:

netstat -nl|grep 3306

它应该会产生这样的结果:

Tcp 0.127.0.0.1:33060.0.0.0: * LISTEN

你可以利用

ps -ef | grep mysql

尝试只使用 -e(--execute)选项:

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

用“用户名”和“密码”替换 root

如果你使用的系统没有 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,这是默认的。

对我来说,“约瑟路易斯克的回答是:

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

但事情是这样的:

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

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

使用 netstat将不会显示 Mac OS X 上的进程,所以使用 netstat 只能通过端口进行搜索。
使用 lsof将显示进程名。

当我遇到港口冲突(码头集装箱)时,我做了以下事情:

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)

我认为最合适的方法是使用 lsoftcommand 行工具找到与 mysql 服务器相关的端口。

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