MySQL'in hangi port üzerinde çalıştığını ve bağlanıp bağlanamayacağını nasıl test edebilirim?


143

MySQL'i yükledim ve hatta orada bir kullanıcı olarak oturum açtım.

Ama böyle bağlanmaya çalıştığımda:

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

İkisi de işe yaramıyor. Her ikisinin de işe yarayıp yaramadığından emin değilim, ama en azından biri :)

Limanın gerçekten 3306 olduğundan nasıl emin olabilirim? Bir şekilde görmek için linux komutu var mı? Ayrıca, bir url yoluyla denemenin daha doğru bir yolu var mı?

Yanıtlar:


207

Bir bağlantı noktasında bir dinleyici bulmak için şunu yapın:

netstat -tln

Eğer mysql gerçekten de bu bağlantı noktasını dinliyorsa, buna benzeyen bir hat görmelisiniz.

tcp        0      0 127.0.0.1:3306              0.0.0.0:*                   LISTEN      

3306 numaralı bağlantı noktası MySql'in varsayılan bağlantı noktasıdır.

Bağlanmak için, temel mysql istemcisi gibi istediğiniz istemciyi kullanmanız yeterlidir.

mysql -h localhost -u kullanıcı veritabanı

Veya kitaplık kodunuz tarafından yorumlanan bir URL.


2
127.0.0.1:3306 yerine 0.0.0.0:3306 yazdığında ne anlama geliyor?
mbmast

1
@mbmast 127 ... yalnızca yerel ana bilgisayarda dinleme anlamına gelir (harici olarak erişilemez). 0.0.0.0 "tüm arayüzler" anlamına gelir ve bu nedenle (genellikle) harici olarak görülebilir.
Keith

Dışarıdan göründüğümü düşündüm, makinenin kendi IP adresi olması gerekiyordu ve 0.0.0.0, hizmetin hiçbir yerden kullanılamayacağı anlamına geliyor. Yanlış mı var? MySQL çalıştıran bir kutu var, güvenlik duvarı herhangi bir IP adresinden 3306 açık ama MySQL bağlantı reddediyor, diye düşündüm şu anda MySQL 0.0.0.0 dinliyor çünkü.
mbmast

Bunu @ bortunac'ın -pparametreye başvuran cevabı ile birleştirmelidir . İşlem (ler) i eklemek gerçekten bu bilgiyi daha kullanışlı hale getirmeye yardımcı olur.
Ragaar

1
@ Linux için üç bayrak kontrol edin. TCP, dinleyiciler, isim araması yok. bakın man netstat.
Keith

138

Mysql istemcisini kullanma:

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';

HATA 1146 (42S02): 'performance_schema.global_variables' tablosu mevcut değil
Maria Ines Parnisari

65

grep port /etc/mysql/my.cnf (en azından debian / ubuntu eserlerinde)

veya

netstat -tlpn | grep mysql

Doğrulayın

bağlama adresi 127.0.0.1

/etc/mysql/my.cnf dosyasında olası kısıtlamaları görmek için


32
netstat -tlpn

Liste aşağıdaki gibi bir şey gösterecektir:

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üm ayrıntılar için kök olarak kullanın. Bu -tseçenek çıkışı -ldinleme bağlantı noktaları için TCP bağlantılarıyla sınırlar, -pprogram adını listeler ve -nadlandırılmış bir sürüm yerine bağlantı noktasının sayısal sürümünü gösterir.

Bu şekilde işlem adını ve bağlantı noktasını görebilirsiniz.


1
Benim için çalışmadı - "tcp 0 0 127.0.0.1:3306 0.0.0.0:* DİNLE -"
Bryan

7

Yalnızca -e( --execute) seçeneğini kullanmayı deneyin :

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

Değiştir rootsenin "kullanıcı adı" ve "şifre" ile


6

Her iki URL de yanlış - olması gerekir

jdbc:mysql://host:port/database

Söylemeden gittiğini düşündüm, ancak Java ile bir veritabanına bağlanmak bir JDBC sürücüsü gerektirir. MySQL JDBC sürücüsüne ihtiyacınız olacak .

Belki TCP / IP üzerinden bir soket kullanarak bağlanabilirsiniz. MySQL belgelerine göz atın .

Bkz. Http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference-configuration-properties.html

GÜNCELLEME:

MySQL ( telnet ip 3306) içine telnet denedim , ama çalışmıyor:

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

Bence aklındaki bu.


Kodumda denediğimde işe yaramadı :( Ayrıca bir tarayıcıya yapıştırdığımda, Firefox böyle bir şeyi açamayacağını söyledi. Nerede / nasıl deneyebilirim? - Teşekkür ederim!
GeekedOut

Evet, tarayıcıda açamazsınız. MySQL JDBC sürücüsüne ve Java koduna ihtiyacınız var.
duffymo

3
yalnızca Java kullanıyorsanız.
Keith

Database.yml dosyası üzerinden Ruby on Rails kullanarak kurmaya çalışıyorum. Ama sadece port numarasına ihtiyacım vardı.
GeekedOut

Bu soruya gerçekten cevap vermiyor.
AStopher

6

Bazıları için daha basit bir yaklaşım: MySQL'in belirli bir bağlantı noktasında olup olmadığını kontrol etmek istiyorsanız, terminalde aşağıdaki komutu kullanabilirsiniz. Mac'te test edildi. 3306 varsayılan bağlantı noktasıdır.

mysql --host=127.0.0.1 --port=3306

MySQL kabuk terminaline başarılı bir şekilde giriş yaparsanız, sorun değil! Başarılı bir giriş yaptığım çıktı bu.

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

3306 mysql için varsayılan bağlantı noktasıdır. Şunlarla kontrol et:

netstat -nl|grep 3306

bu sonucu vermelidir:

tcp 0 0 127.0.0.1:3306 0.0.0.0:* DİNLE



3

Benim için @ joseluisq'in cevabı şöyle oldu:

HATA 1045 (28000): 'root' @ 'localhost' kullanıcısı için erişim reddedildi (şifre kullanarak: HAYIR)

Ama şu şekilde çalıştı:

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

3

Mac OS X'te iki seçenek vardır. netstatveyalsof

Kullanmak netstatişlemi Mac OS X'te göstermez. Bu nedenle netstat'ı kullanarak yalnızca bağlantı noktasına göre arama yapabilirsiniz.
Kullanıldığında lsofişlem adı gösterilir.

Bağlantı noktası çakışmalarıyla (docker kapsayıcıları) karşılaştığım için aşağıdakileri yaptım:

netstat -aln | grep 3306

Çıktılar: tcp46 0 0 *.3306 *.* LISTEN

sudo lsof -i -P | grep -i "LISTEN" | grep -i 3306

Çıktılar: mysqld 60608 _mysql 31u IPv6 0x2ebc4b8d88d9ec6b 0t0 TCP *:3306 (LISTEN)


2

Kullanılamayan bir sistemdeyseniz netstat(örn. RHEL 7 ve daha yeni Debian sürümleri) ssaşağıdaki gibi kullanabilirsiniz :

sudo ss -tlpn | grep mysql

Ve çıktı için aşağıdaki gibi bir şey alırsınız:

LISTEN     0      50        *:3306        *:*        users:(("mysqld",pid=5307,fd=14))

Dördüncü sütun Local Address:Port. Bu durumda Mysql, varsayılan 3306 numaralı bağlantı noktasını dinliyor.


1

@ Bortunac'ın çözümüne katılıyorum. my.conf mysql'e özgüdür, netstat size tüm dinleme bağlantı noktalarını sağlar.

Belki ikisini de kullanın, biri mysql için ayarlanan bağlantı noktasını ve diğeri de sistemin o bağlantı noktasını dinlediğini kontrol etmek için kullanın.

Müşterim CentOS 6.6 kullanıyor ve / etc / altında my.conf dosyasını buldum, bu yüzden kullandım:

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.