Can I SSH to MySQL with the GUI tools?

13,239

Solution 1

ssh -L localport:127.0.0.1:remoteport user@remotehost

where localport is an unbound port on your local system, remoteport is the port on which MySQL listens, 127.0.0.1 is the loopback address on your remote system, user is your user name and remotehost is the address of the remote system.

Then point your MySQL client to 127.0.0.1:localport. The connection will be forwarded over the SSH tunnel to the remote port.

Solution 2

If you are using Windows or Unix on your local machine, PuTTY is an excellent tool for this. Here's a tutorial on port forwarding:

http://www.cs.uu.nl/technical/services/ssh/putty/puttyfw.html

Solution 3

Set up a tunnel using the SSH client to map a local port, through the tunnel, to a port on the remote machine, then connect to the local port using the client.

man ssh will have the gory details, but you're probably better off searching the web for something a wee bit easier to read.

Solution 4

I'd suggest using HeidiSQL if you are on Windows. It handles the SSH tunnel by itself (you just need to download the plink.exe utility).

In my humble opinion, it is the best MySQL tool out there (and it's free and open source).

Solution 5

There two ways to use the GUI mysql tools on a remote MYSQL machine.

I'm assuming the remote machine is running linux.

Option 1.

SSH port forwarding.

ssh -L 3306:proxy:3306 username@remotehost

Basically you forward port 3306 on your local machine to 3306 on your remote machine, then you tell your graphical MYSQl tool to connect to localhost:3306 and you assume that your remote machine is listening on the standard port of 3306

http://magazine.redhat.com/2007/11/06/ssh-port-forwarding/

Also ssh -D 3306 username@remotehost should be similar

Option 2.

If you are running xserver on your remote machine and have the GUI tools installed on your remote machine you can tunnel your GUI over the SSH connection.

ssh -X username@remotehost and then start your GUI tools over on remote machine from the command line.

Share:
13,239
Neil Middleton
Author by

Neil Middleton

Engineer at Heroku.

Updated on June 05, 2022

Comments

  • Neil Middleton
    Neil Middleton almost 2 years

    I have a ubuntu server which I've locked down to only HTTP, HTTPS and SSH (port 30000). On this box I have a MySQL server which 99.9% of the time is only used locally. Every now and then I want to connect to the MySQL instance with the GUI tools, but without touching the firewall.

    Therefore, it is possible to set things up so that I can connect to the MySQL box with the SSH connection? Is there any sort of port forwarding magic I can do?

  • Neil Middleton
    Neil Middleton about 15 years
    So if my remote SSH port is 30000, my MySQL port is 3306 (inside the firewall) and I have 22 open on my machine I can use: ssh -L 22:my_remote_address:3306 user@my_remote_address -p 30000 ?
  • innaM
    innaM about 15 years
    No. You won't be able to map 3306 on the remote machine to 22 on the local machine. You'd need to be root on the local machine and it would be confusing too. Any number >= 1024 should be fine, though.
  • ng10
    ng10 over 3 years
    link give 404 response