วิธีตรวจสอบว่าพอร์ต mysql กำลังทำงานอยู่


69

บน windows dev กล่องของฉัน mysql ทำงานบนพอร์ต 3306

ฉันจะตรวจสอบว่าพอร์ตใดที่ทำงานอยู่บนเซิร์ฟเวอร์ unix ที่ฉันต้องอัปโหลดแอปไป


ขึ้นอยู่กับว่าคุณจะเข้าถึงเซิร์ฟเวอร์ได้อย่างไร คุณมีการเข้าถึง ssh, การเข้าถึงลูกค้า mysql หรือบางส่วนของเว็บอินเตอร์เฟสเช่น phpMyAdmin หรือไม่?
jonfhancock

ssh access - through putty
Ankur

นี่เป็นโฮสต์ที่ใช้ร่วมกันหรือไม่ ถ้าเป็นเช่นนั้นอาจมีหลายอินสแตนซ์ของ MySQL ทำงานอยู่บนแต่ละพอร์ตที่แตกต่างกัน
John Gardeniers

ไม่เป็นการตั้งค่า VM สำหรับฉันเท่านั้นดังนั้นจึงมีเพียงอินสแตนซ์เดียว
Ankur

คำตอบ:


87

ฉันทำ

mysql> แสดงตัวแปรทั่วโลกเช่น 'PORT';

และนั่นบ่งชี้ว่าฉันกำลังใช้งานอยู่port 3306และการค้นหาข้อผิดพลาดของฉันจะดำเนินต่อไป


1
คำสั่งนี้ช่วยในการค้นหาตัวแปรทั่วโลกทั้งหมด mysql> แสดงตัวแปรทั่วโลก;
Arun211

38

ที่ดีที่สุดวิธีที่จะรู้ว่าสิ่งที่จริงการประยุกต์ใช้คือการฟังที่อินเตอร์เฟซและในสิ่งที่พอร์ตคือการใช้netstat

คุณสามารถทำสิ่งนี้ในฐานะรูท :

netstat -tlnp

มันจะแสดงรายการบริการฟังทั้งหมดเช่นนี้:

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:3306            0.0.0.0:*               LISTEN      25934/mysqld
tcp6       0      0 :::22                   :::*                    LISTEN      7964/dropbear

คอลัมน์สุดท้ายแสดงให้คุณเห็นว่า mysqld เชื่อมโยงตัวเองกับพอร์ต 3306 ที่กำลังฟังอยู่บนอินเตอร์เฟสทั้งหมด

อันที่จริงมันใช้ได้กับทุกสิ่งไม่ใช่แค่ mysql คุณยังสามารถใช้ซ็อกเก็ต TCP ที่ไม่ใช่


2
แฟล็ก -p ทำงานบน linux, afaik เท่านั้น (ไม่ใช่ Mac OS X อย่างน้อย)
jdizzle

1
เดาว่าคุณติดอยู่กับlsof -i TCPตอนนั้น
sybreon

คำสั่ง Linux และคำสั่ง windows แตกต่างกันเล็กน้อย สำหรับ Windows คุณต้องยกระดับและแทนที่ p ด้วย ab
IceMage

6

ป้อนผ่านเทอร์มินัลไปยัง MySQL:

mysql -u root

จากนั้นพิมพ์ข้อความต่อไปนี้ในพรอมต์ mysql:

mysql> SHOW GLOBAL VARIABLES LIKE 'PORT';

สิ่งนี้ใช้ได้สำหรับฉัน


4

MySQL จะตั้งค่าเริ่มต้นเป็นพอร์ต 3306 ยกเว้นว่าคุณระบุบรรทัดอื่นใน/etc/my.cnfไฟล์กำหนดค่า

นอกเสียจากคุณ/etc/my.cnfมีสิ่งที่ชอบ

[mysqld]
port = 3308

ถ้าอย่างนั้นก็มีโอกาสมากที่คุณจะใช้พอร์ตเริ่มต้น


4

หากคุณต้องการยืนยันว่ามันกำลังทำงานอยู่บนพอร์ตคุณสามารถ telnet เข้าสู่พอร์ตในขณะที่กระบวนการกำลังดำเนินการดังนี้:

telnet localhost 3306

คุณจะเห็นรายงานว่าคุณเชื่อมต่อกับ mySQL

คุณสามารถค้นหา PID ของกระบวนการโดยใช้ ps และ grep:

ps -ef | grep mysql

จากนั้นใส่ pid นั้นลงใน lsof เพื่อพิมพ์ตัวอธิบายไฟล์ที่เปิดทั้งหมด คุณจะพบพอร์ตที่กระบวนการเชื่อมต่อกับด้านบนสุด


3

วิธีการทางเลือกสำหรับรายการที่มีอยู่แล้ว (และไม่ดีเท่าไร แต่ก็ใช้ได้ดี)

prompt>lsof -n | grep 'mysql.*TCP'
mysqld     1564     mysql   10u     IPv4            3246456       0t0        TCP *:mysql (LISTEN)
prompt>cat /proc/1564/net/tcp
  sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
   0: 11AC11AC:0035 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 14299 1 ffff88012a429a00 299 0 0 2 -1
   1: 017AA8C0:0035 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 13871 1 ffff880129962080 299 0 0 2 -1
   2: 00000000:0016 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 12596 1 ffff880129960000 299 0 0 2 -1
   3: 0100007F:0277 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 11459 1 ffff88012a429380 299 0 0 2 -1
   4: 00000000:8D58 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 11315 1 ffff88012a428d00 299 0 0 2 -1
   5: 00000000:0019 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 12940 1 ffff880129960680 299 0 0 2 -1
   6: 0100007F:177A 00000000:0000 0A 00000000:00000000 00:00000000 00000000   500        0 3600557 1 ffff8800672dee80 299 0 0 2 -1
   7: 0100007F:177B 00000000:0000 0A 00000000:00000000 00:00000000 00000000   500        0 3603871 1 ffff88012a42ee80 299 0 0 2 -1
   8: 0100007F:177C 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 3608169 1 ffff88012a42f500 299 0 0 2 -1
   9: 0100007F:177D 00000000:0000 0A 00000000:00000000 00:00000000 00000000   500        0 3615687 1 ffff88012a42e180 299 0 0 2 -1
  10: 0100007F:00C7 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 3608454 1 ffff8800672db400 299 0 0 2 -1
  11: 00000000:0CEA 00000000:0000 0A 00000000:00000000 00:00000000 00000000    27        0 3246456 1 ffff8800672dba80 299 0 0 2 -1
  12: 00000000:024B 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 12944 1 ffff880129961380 299 0 0 2 -1
  13: 00000000:006F 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 10657 1 ffff88012a428680 299 0 0 2 -1
  14: 00000000:01D1 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 12942 1 ffff880129960d00 299 0 0 2 -1
  15: 0100007F:1DD2 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 3631325 1 ffff8800672da700 299 0 0 2 -1
  16: 0100007F:990B 0100007F:177B 01 00000000:00000000 02:0002F5D8 00000000   500        0 3610110 2 ffff8800672df500 20 3 26 4 19
  17: 0100007F:177B 0100007F:990C 01 00000000:00000000 00:00000000 00000000   500        0 3610124 1 ffff88012a42d480 20 3 0 5 -1
  18: 0100007F:990D 0100007F:177B 01 00000000:00000000 02:00031144 00000000   500        0 3610142 2 ffff8800672d9380 20 3 0 5 -1
  19: 0100007F:177B 0100007F:990B 01 00000000:00000000 00:00000000 00000000   500        0 3610111 1 ffff8800672dc100 21 3 29 4 -1
  20: 0100007F:177B 0100007F:9949 01 00000000:00000000 00:00000000 00000000   500        0 3611026 1 ffff8800672dad80 20 3 0 5 -1
  21: 0100007F:9912 0100007F:177B 01 00000000:00000000 02:0005D3D3 00000000   500        0 3610249 2 ffff8800672de180 20 3 0 3 -1
  22: 0100007F:177B 0100007F:990D 01 00000000:00000000 00:00000000 00000000   500        0 3610143 1 ffff8800672de800 20 3 1 5 -1
  23: 11AC11AC:0016 480111AC:9074 01 00000000:00000000 02:0002BCFF 00000000     0        0 3608096 2 ffff88012a428000 20 3 1 5 16
  24: 11AC11AC:0016 480111AC:8485 01 00000000:00000000 02:0005819F 00000000     0        0 3615610 2 ffff88012a42c100 20 3 1 5 -1
  25: 0100007F:177B 0100007F:9923 01 00000000:00000000 00:00000000 00000000   500        0 3610494 1 ffff88012a42ce00 20 3 0 5 -1
  26: 0100007F:990F 0100007F:177B 01 00000000:00000000 02:0003117F 00000000   500        0 3610209 2 ffff8800672dd480 20 3 0 5 -1
  27: 0100007F:9949 0100007F:177B 01 00000000:00000000 02:0005D3D3 00000000   500        0 3611025 2 ffff8800672ddb00 20 3 0 3 -1
  28: 0100007F:90CF 0100007F:177B 01 00000000:00000000 02:00004637 00000000   500        0 4049147 2 ffff8800672dc780 20 3 1 5 -1
  29: 11AC11AC:0016 480111AC:C273 01 00000000:00000000 02:00021D06 00000000     0        0 3600488 4 ffff88012a42a700 20 6 31 4 34
  30: 0100007F:177B 0100007F:90CF 01 00000000:00000000 00:00000000 00000000   500        0 4049148 1 ffff8800672d8680 20 3 0 5 -1
  31: 11AC11AC:0016 480111AC:C7C3 01 00000000:00000000 02:00093A92 00000000     0        0 3603799 2 ffff88012a42ba80 20 3 26 5 31
  32: 0100007F:177B 0100007F:9912 01 00000000:00000000 00:00000000 00000000   500        0 3610250 1 ffff8800672da080 20 3 0 5 -1
  33: 0100007F:177B 0100007F:990F 01 00000000:00000000 00:00000000 00000000   500        0 3610210 1 ffff8800672d9a00 20 3 1 5 -1
  34: 0100007F:990C 0100007F:177B 01 00000000:00000000 02:00031147 00000000   500        0 3610123 2 ffff88012a42ad80 20 3 1 5 -1
  35: 0100007F:9923 0100007F:177B 01 00000000:00000000 02:0005D3D3 00000000   500        0 3610493 2 ffff88012a42e800 20 3 16 3 -1
prompt>grep '^mysql:' /etc/passwd
mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash
prompt>

บรรทัด uid 27 เป็นซ็อกเก็ตการฟังของโพรเซส mysqld และ 0CEA นั้นเป็นเลขฐานสิบหกสำหรับ 3306


1

ตกลงใช้งานได้กับกล่อง linux ของฉัน แต่ฉันไม่แน่ใจว่า Unix จะเก็บไฟล์ cnf ไว้ในที่เดียวกัน

cat /etc/mysql/my.cnf | grep 'พอร์ต'


0

คุณอาจลองปรับแต่งบันทึก mysql ... ลองเรียกใช้

shell$> tail -f /var/log/mysql/mysqld.log

ขณะรีสตาร์ท mysql โดย

service mysqld stop/start

บนเทอร์มินัล / แท็บ ssh อื่น พอร์ตที่การฟังจะถูกแสดงในบันทึกดังนี้:

Version: '5.7.21-log'  socket: '/tmp/mysql.sock'  port: 3307  MySQL Community Server (GPL)

-2

คำสั่งข้างต้นไม่ได้ช่วยฉันใน mac ของฉัน

ฉันเคยlsof -i TCP:3306ค้นหากระบวนการ mysqld ซึ่งจริง ๆ แล้วฟังเป็น * .mysql


1
คำสั่งนี้สามารถให้ PID แก่คุณได้ถ้าหมายเลขพอร์ตเป็นค่าเริ่มต้น 3306 Original Poster (OP) มีหมายเลขที่ไม่ใช่ค่าเริ่มต้น
kubanczyk

ฉันได้รับตัวอย่าง .. คุณสามารถแทนที่ 3306 ด้วยพอร์ตอื่น ในกรณีนี้มันเป็น 3307 คำสั่งที่ถูกต้องว่า
Prasath Rajan

1
วิธีที่ถูกต้องใช้: sudo lsof -i :3306.
Bruno Wego
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.