why is mySQL connecting at any/all ports

Girish Dusane picture Girish Dusane · Dec 9, 2010 · Viewed 13.7k times · Source

I'm running Linux Mint and trying to connect to mySQL this way

mysql --port=3306 -u root -p

Then it prompts me for my password. This is all fine. Why is it that when I type something like this it still works....

mysql --port=1234 -u root -p

Should that not fail since there is no mySQL server running on port 1234?

The reason I am asking this is because I want to create a SSH tunnel to connect to a database on another server. Let's say the SSH tunnel will forward all my traffic from localhost:3308 to myremoteserver:3306. Since my local mySQL server is accepting my connections on all ports, I cannot actually connect to port 3308 and hit the remote server. I am still hitting my local server....

Even if my SSH tunnel options might have been wrong, I was wondering if anyone knew why I can connect to port 1234 and it still hit my local mySQL server running on 3306?

Answer

P0P3Y picture P0P3Y · Sep 27, 2012

To force a TCP connection use --protocol=TCP.

Example:

First the SSH tunnel

ssh -L 4000:localhost:3306 server.ch

and then connect to the remote mysql server with

mysql -h localhost --port=4000 --protocol=TCP -u root -p