Saya telah menginstal MySQL dan bahkan masuk sebagai pengguna.
Tetapi ketika saya mencoba terhubung seperti ini:
//localhost:3306
mysql://localhost:3306
Tidak ada yang berhasil. Tidak yakin apakah keduanya seharusnya berfungsi, tetapi setidaknya salah satu dari mereka seharusnya :]
Bagaimana saya bisa memastikan bahwa port tersebut benar-benar 3306? Apakah ada perintah linux untuk melihatnya? Juga, adakah cara yang lebih benar untuk mencobanya melalui url?
Untuk menemukan pendengar di port, lakukan ini:
netstat -tln
Anda akan melihat garis yang terlihat seperti ini jika mysql memang mendengarkan pada port itu.
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
Port 3306 adalah port default MySql.
Untuk terhubung, Anda hanya perlu menggunakan klien apa pun yang Anda butuhkan, seperti klien mysql dasar.
mysql -h localhost -u basis data pengguna
Atau url yang ditafsirkan oleh kode perpustakaan Anda.
Menggunakan klien Mysql:
mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';
grep port /etc/mysql/my.cnf
[setidaknya dalam karya debian/ubuntu]
atau
netstat -tlpn | grep mysql
memeriksa
bind-address 127.0.0.1
di /etc/mysql/my.cnf untuk melihat kemungkinan pembatasan
netstat -tlpn
Akan muncul daftar seperti di bawah ini:
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
Gunakan sebagai root untuk semua detail. Opsi -t
membatasi output untuk koneksi TCP, -l
untuk port mendengarkan, -p
mencantumkan nama program dan -n
menunjukkan versi numerik port bukan versi yang disebutkan.
Dengan cara ini Anda dapat melihat nama proses dan porta.
Coba saja gunakan opsi -e
[--execute
]:
$ mysql -u root -proot -e "SHOW GLOBAL VARIABLES LIKE 'PORT';" [8s 26ms]
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
Ganti root
dengan
"nama pengguna" dan "kata sandi" Anda
Pendekatan yang lebih sederhana untuk beberapa: Jika Anda hanya ingin memeriksa apakah MySQL pada port tertentu, Anda dapat menggunakan perintah berikut di terminal. Diuji pada mac. 3306 adalah port default.
mysql --Host=127.0.0.1 --port=3306
Jika Anda berhasil masuk ke terminal MySQL Shell, Anda baik-baik saja! Ini adalah output yang saya dapatkan pada login yang sukses.
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>
3306 adalah port default untuk mysql. Periksa dengan:
netstat -nl|grep 3306
itu harus memberikan hasil ini:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
kamu bisa memakai
ps -ef | grep mysql
Pada mac os X, ada dua opsi. netstat
atau lsof
Menggunakan netstat
tidak akan menunjukkan proses pada Mac OS X. jadi menggunakan netstat Anda hanya dapat mencari
berdasarkan port.
Menggunakan lsof
akan menampilkan nama proses.
Saya melakukan hal berikut ketika saya menghadapi konflik pelabuhan [kontainer buruh pelabuhan]:
netstat -aln | grep 3306
Output: tcp46 0 0 *.3306 *.* LISTEN
Sudo lsof -i -P | grep -i "LISTEN" | grep -i 3306
Output: mysqld 60608 _mysql 31u IPv6 0x2ebc4b8d88d9ec6b 0t0 TCP *:3306 [LISTEN]
Bagi saya, jawaban @ joseluisq menghasilkan:
GALAT 1045 [28000]: Akses ditolak untuk 'root' @ 'localhost' pengguna [menggunakan kata sandi: TIDAK]
Tapi itu bekerja seperti ini:
$ mysql -u [email protected] -e "SHOW GLOBAL VARIABLES LIKE 'PORT';"
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| port | 3306 |
+---------------+-------+
Jika Anda berada di sistem di mana netstat
tidak tersedia [mis. RHEL 7 dan rilis Debian yang lebih baru] Anda dapat menggunakan ss
, seperti di bawah ini:
Sudo ss -tlpn | grep mysql
Dan Anda akan mendapatkan sesuatu seperti berikut untuk hasil:
LISTEN 0 50 *:3306 *:* users:[["mysqld",pid=5307,fd=14]]
Kolom keempat adalah Local Address:Port
. Jadi dalam hal ini Mysql mendengarkan pada port 3306,
defaultnya.
Saya setuju dengan solusi @ bortunac. my.conf adalah mysql khusus sementara netstat akan memberi Anda semua port mendengarkan.
Mungkin menggunakan keduanya, satu untuk mengonfirmasi port mana yang diatur untuk mysql dan yang lainnya untuk memeriksa apakah sistem mendengarkan melalui port itu.
Klien saya menggunakan CentOS 6.6 dan saya telah menemukan file my.conf di/etc /, jadi saya menggunakan:
grep port /etc/my.conf
[CentOS 6.6]