我已經安裝MySQL,甚至以用戶身份登錄。如何測試MySQL正在運行的端口以及它是否可以連接?
但是,當我嘗試連接這樣的:
http://localhost:3306
mysql://localhost:3306
無論是作品。不知道是否都應該工作,但至少有一個應該:)
我怎樣才能確保端口確實是3306?有沒有一個Linux命令來看看它? 另外,有沒有更正確的方法來通過網址來試用它?
我已經安裝MySQL,甚至以用戶身份登錄。如何測試MySQL正在運行的端口以及它是否可以連接?
但是,當我嘗試連接這樣的:
http://localhost:3306
mysql://localhost:3306
無論是作品。不知道是否都應該工作,但至少有一個應該:)
我怎樣才能確保端口確實是3306?有沒有一個Linux命令來看看它? 另外,有沒有更正確的方法來通過網址來試用它?
要找到一個端口上監聽器,這樣做:
netstat -tln
您應該會看到一條線,看起來像這樣如果MySQL確實是一個端口上偵聽。
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
端口3306是MySql的默認端口。
要連接,您只需使用您需要的任何客戶端,例如基本的mysql客戶端。
的mysql -h本地主機-u用戶數據庫
或者由你的庫代碼解釋的URL。
兩個網址是不正確的 - 應該是
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
UPDATE:
我嘗試遠程登錄到MySQL(telnet ip 3306
),但它不工作:
http://lists.mysql.com/win32/253
我覺得這是你有什麼心神。
grep port /etc/mysql/my.cnf
(至少在於Debian/Ubuntu作品)
或
netstat -tlpn | grep mysql
驗證
綁定地址127:0.0.1
在/ etc/MySQL的/我的。CNF看可能限制
它解決了我的問題 – 2017-09-11 12:30:27
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
用作根的所有細節。 -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';
錯誤1146(42S02):表'performance_schema。global_variables'不存在 – 2016-09-05 01:20:07
我同意@ 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 0 127.0.0.1:3306 0.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。
對於我來說,@ joseluisq的回答產生了:
ERROR 1045(28000):拒絕訪問用戶 '根' @ 'localhost' 的(使用密碼:NO)
但它的工作這樣:
$ mysql -u [email protected] -e "SHOW GLOBAL VARIABLES LIKE 'PORT';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
在Mac OS X上,有兩個選項。 netstat
或lsof
使用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)
什麼意思,而不是127.0.0.1:3306它說0.0.0.0:3306? – mbmast 2016-12-09 00:27:11
@mbmast 127 ...表示僅在本地主機上偵聽(不可從外部訪問)。 0.0.0.0表示「所有接口」,因此通常是外部可見的。 – Keith 2016-12-09 00:39:42
我認爲是外部可見的,它必須是機器自己的IP地址,0.0.0.0意味着該服務不能從任何地方獲得。我有錯嗎?我有一個運行MySQL的盒子,防火牆從任何IP地址打開3306,但MySQL拒絕連接,因爲目前MySQL正在偵聽0.0.0.0。 – mbmast 2016-12-09 16:44:53