I got tired of working with unfamiliar and slow database tools and wanted to use my old favourite tool, phpMyAdmin on my local machine to connect to a remote database, that I can only access via an SSH tunnel. First, you need to create the SSH tunnel, of course
ssh -fNL 3307:localhost:3306 user@host
This makes the tunnel to user@host to port 3307, which you can then access as if it is local in phpMyAdmin. Next you must set up phpMyAdmin to show a dropdown to multiple servers:
- Open config.inc.php in your phpmyadmin installation folder.
- Create a $hosts array that contain all the info between all the servers that are different. For now, we will only specify a few items. Adapt to your liking.
$hosts = array( 'local' => array( 'verbose' => 'Verbose display name', 'user' => 'blah', 'password' => 'blah', 'port' => 3306, 'host' => '127.0.0.1', 'auth_type' => 'http' ), 'remote1' => array( 'user' => 'etc' ), 'etc' => array( 'user' => 'etc' ) );
With the various server configs defined, you can simply edit your config.inc.php file as follows:
$i = 0; foreach ($hosts as $k => $v) { $i++; $cfg['Servers'][$i]['verbose'] =$v['verbose']; $cfg['Servers'][$i]['port'] =$v['port']; $cfg['Servers'][$i]['user'] =$v['user']; $cfg['Servers'][$i]['password'] =$v['password']; $cfg['Servers'][$i]['host'] =$v['host']; $cfg['Servers'][$i]['auth_type'] =$v['auth_type']; $cfg['Servers'][$i]['favorite'] ='pma__favorite'; }
Simple?