Here I had the same situation. Previous versions of DBeaver used to keep the connection longer (I don't remember precisely which version), in the order of hours. I solved this issue by using a VPN or a SSH port forwarding from my machine. So, it is the same configuration as yours with localhost, but the tunnel is done outside DBeaver. SSH is a low-level communications protocol providing security via strong encryption and advanced cryp. Application Development Frameworks Last Updated on Thursday, May 7, 2020 - 09:28 by Irida Haznedari.
DBeaver is an awesome SQL client and database management tool.
DBeaver, DataGrip, and Navicat for PostgreSQL are probably your best bets out of the 18 options considered. 'Free' is the primary reason people pick DBeaver over the competition. This page is powered by a knowledgeable community that helps you make an informed decision. This is a good and stable tool with really good and useful functionality: import/export, SSH tunnelling, fast searching, duplication, DDL visualization etc. If you are a professional, don't complain about the pricing. If you're an amateur, maybe this isn't for you. Ubuntu on Windows allows you to use Ubuntu Terminal and run Ubuntu command line utilities including bash, ssh, git, apt and many more. Please note that Windows 10 S does not support running this app. To launch, use 'ubuntu' on the command-line prompt (cmd.exe), or click on the Ubuntu tile in the Start Menu.
It comes with drivers for the most popular databases, including MySQL, PostgreSQL, SQLite and many others, meaning you can learn one tool and use it across projects built on different technology stacks. How awesome is that?
Bellow are the steps you can use to connect your DBeaver client to a remote database server via SSH.
Note that you only need to do these steps once. The connection configurations will be saved and you can re-use them by right-click + connect.
This guide is created using DBeaver version 6.3.
Method 1: DBeaver via SSH with plain password
1. Create a new connection
Create a new connection by right clicking in your Database Navigator area.
2. Fill SSH details
Fill details under the SSH tab, and click Test tunnel configuration.
You should see a success message if the details were correct.
3. Fill database’s details
Now that DBeaver can connect via SSH, let’s go back to the General tab and fill in the database credentials:
Clicking Test Connection, you should see a success message. Click Finish.
Method 2: DBeaver with encrypted openssh private key file
If your server requires an openssh private key to login, follow the bellow steps:
1. Add SSHJ to DBeaver
You can do it by opening Help/Install New Software… and typing the following link: https://dbeaver.io/update/sshj/latest/
2. Connect
Hp p1102w driver for mac. Use the same steps as Method 1, but adjust as follows:
- On the SSH details menu (step 2), provide the password for your encrypted private key file.
Select SSHJ, under Implementation.
- Change Authentication Method to Public Key.
Select your Private Key
- Click Test tunnel configuration and Finish.
Resources
If you need additional help, this link may be very useful.
Warning -- this will only work in paid accounts
MySQL databases on PythonAnywhere are protected by a firewall, so externalcomputers can't access them.
However, if you have a paid account, you can access your MySQL databasefrom outside using a technique called an SSH tunnel, which essentially makesa secure SSH connection to our systems, then sends the MySQL stuff over it.
There are a number of ways to do this. The first thing you need to know isthe SSH hostname for your account:
- If your account is on our global, US-based system at
www.pythonanywhere.com
, then the SSH hostname isssh.pythonanywhere.com
- If your account is on our EU-based system at
eu.pythonanywhere.com
, then the SSH hostname isssh.eu.pythonanywhere.com
Armed with that, you can do one of the following:
MySQL Workbench
If you're running MySQL Workbench, you can configure it with settings like this using 'Standard TCP/IP over SSH':
Setting | Value |
---|---|
SSH Hostname: | your SSH hostname |
SSH Username: | your PythonAnywhere username |
SSH Password: | the password you use to log in to the PythonAnywhere website |
SSH Key file: | should not be necessary when you specify the password |
MySQL Hostname: | your PythonAnywhere database hostname, eg. yourusername.mysql.pythonanywhere-services.com |
MySQL Server Port: | 3306 |
Username: | your PythonAnywhere username |
Password: | your PythonAnywhere database password |
Default Schema: | your database name, eg yourusername$mydatabase |
You may also need to allow ssh login based management as one of the mysql workbench options under server connections -> remote management.
It's also a good idea to set the Edit -> Preferences -> SQL Editor -> DBMS_Connection keep alive interval setting to 200, to avoid any 'lost connection' issues due to our 5-minute connection timeout.
DBeaver
If you're running DBeaver, you can configure it with the following settings:
- Check 'Use SSH tunnel' in Connect to new database -> Mysql -> SSH tab
Setting | Value |
---|---|
Host/IP: | your SSH hostname (ssh.eu.pythonanywhere.com or ssh.pythonanywhere.com) |
User Name: | your PythonAnywhere username |
Password: | the password you use to log in to the PythonAnywhere website |
Local port: | 3306 if you are not running a local database, else a random number you pick |
Remote port: | 3306 |
Keep-Alive interval: | 0/otherwise connection will fail/ |
MySQL Hostname: | your PythonAnywhere database hostname, eg. yourusername.mysql.pythonanywhere-services.com |
MySQL Server Port: | 3306 |
- Test tunnel configuration.. (should be successfull)
- Go to the Main tab
Setting | Value |
---|---|
Server Host: | your PythonAnywhere db hostname (username.mysql.eu.pythonanywhere-services.com or username.mysql.pythonanywhere-services.com) |
Port: | 3306 |
Username: | your PythonAnywhere username |
Password: | the password you use to log in to the PythonAnywhere website |
- Test Connection.. (should be successfull)
- Click 'OK'
From Python code
If you're running Python code on your local machine, and you want it to accessyour MySQL database, you can install the sshtunnel
packageand then use code like this:
This example uses the mysql-connector
library, but you can use any MySQLlibrary you like.
If you have trouble with the SSH Tunnel connection, the project provides ahelpful troubleshooting guide
Klipfolio
Klipfolio is an online business dashboard tool; you can connect it to yourPythonAnywhere MySQL server by setting up a datasource and telling it to use an SSH tunnel.The settings are:
Setting | Value |
---|---|
Host: | your PythonAnywhere database hostname, eg. yourusername.mysql.pythonanywhere-services.com |
Port: | 3306 |
Database: | your database name, eg yourusername$mydatabase |
Driver: | MySQL |
Username: | your PythonAnywhere database username |
Password: | your PythonAnywhere database password |
Then click the arrow next to the 'Use an SSH tunnel' option -- this will revealnew Host, Port, Username and Password inputs:
Setting | Value |
---|---|
Host: | your SSH hostname |
Port: | 22 |
Username: | your PythonAnywhere username |
Password: | the password you use to log in to the PythonAnywhere website |
JetBrains PyCharm
You can set up the SSH tunnelling from the SSH/SSL tab of the PyCharm connectionsetup dialog:
- The 'proxy host' should be your SSH hostname (see the options for that at the top of this help page)
- The 'proxy user' should be your PythonAnywhere username
- The 'proxy password' should be the password you use to log in to our website (not your MySQL password)
You should also be aware that there is a problem in PyCharm where it does notrecognise database names with dollar signs in them (which all databases haveon PythonAnywhere. They have posted a workaround for that on their site.
Sequel-Pro
Contributed by Baodong Liu
I prefer Sequel-Pro, which is a very good looking and easy to use interface foryou to have the convenience of managing your database. The limitation is thatSequel-Pro can only be installed on a Mac computer, not Windows.
Initial installation
It is important to upgrade Sequel-Pro to 1.1.2, the most recent version.After you install the 1.1.2 version, you will need to move the downloadedsoftware to your MacBook Applications. You can simply go to Finder to check theDevices from there. You will find your downloaded Sequel-Pro. Just move it toApplications in Finder. You will need to confirm this from the admin authority.After you successfully move Sequel-Pro to Applications, you can launch it fromyour Applications.
The first thing you need to do on Sequel-Pro is to configure local server andimport a database from your own computer directory. You will enter the followinginformation from the 'Standard' option of connections.
Setting | Value |
---|---|
Host: | 127.0.0.1 |
Username: | root |
Password: | root |
Port: | 8889 |
After entering the above information, you will be able to see that you arerunning your SQL testing environment. Just select 'Add Database' from the'Choose Database' drop-down menu. You can then test it from there, and import alocal database to Sequel-Pro.
Connecting to PythonAnywhere
Now, you are ready to connect your Sequel-Pro to your database that you havepreviously set up on to Pythonanywhere.
To do this, you will need to use the SSH option, rather than the Standard oneyou used earlier. You will then be asked to provide information on both MySQLHost and SSH Host information. You will need to enter all the required boxescorrectly to have the access to your PythonAnywhere database. Here are thedetails:
Setting | Value |
---|---|
Name: | (you can write whatever you want) |
MySQL Host: | your PythonAnywhere database hostname, eg. yourusername.mysql.pythonanywhere-services.com |
Username: | your PythonAnywhere database username |
Password: | your PythonAnywhere database password |
Database: | (optional, so you can leave it blank) |
Port: | 3306 |
SSH Host: | your SSH hostname |
SSH User: | your PythonAnywhere username |
SSH Password: | the password you use to log in to the PythonAnywhere website |
SSH Port: | (optional, so you can leave it blank) |
After entering all the above information correctly, you will successfully beconnected to your database in Pythonanywhere. Your fun of managing your owndatabase starts right away.
Manual SSH tunnelling
For other tools that you want to run on your own machine, you can set up a tunnel that pretends to be a MySQL serverrunning on your machine but actually sends data over SSH to your PythonAnywhereMySQL instance. If you're using a Mac or Linux, you probably already have theright tool installed -- the ssh
command. If you're using Windows, see the 'Using PuTTY on Windows'section below.
Using SSH (Linux/Mac)
Dbeaver Ssh List
As long as you're not running a MySQL instance locally, just invoke SSH locally(that is, on your own machine -- not on PythonAnywhere) like this, replacingusername with your PythonAnywhere username and yoursshhostname withyour SSH hostname:
That -L option means 'forward LOCAL port 3306 to REMOTE hostusername.mysql.pythonanywhere-services.com
port 3306'.
If you are running a MySQL instance locally, then it will probably already be usinglocal port 3306, which means that the ssh
command won't be able to. You can modify your SSH invocationto use any other port -- this one would use the local post 3333.
Dbeaver Ssh Download
REMEMBER You need to keep your this ssh
process open at all times whileyou're accessing your PythonAnywhere MySQL server from your local machine! Assoon as that closes, your forwarded connection is also lost.
After all of that, you'll have a server running on your computer (hostname127.0.0.1, port 3306 -- or 3333 or something else if you have MySQL running locally),which will forward everything on to the MySQL server on PythonAnywhere.
Now skip down to the 'Using the tunnel' section below.
Using PuTTY on Windows
The ssh
command is not normally installed on Windows, but you can use a toolcalled PuTTY instead:
Download and install PuTTY from here. Once you've done that:
- Start PuTTY and enter your SSH hostname into the 'Host name' field
- In the 'Category' tree on the left, open Connection -> SSH -> Tunnels
- If you don't have a MySQL database running on your local machine, enter 'Source port' 3306. If you do have one running, use some other port, for example 3333.
- Set 'Destination' to yourusername
.mysql.pythonanywhere-services.com:3306
. - Click the 'Open' button, and enter the username and password you would use to log in to the PythonAnywhere website.
- Once it's connected, leave PuTTY running -- it will manage the SSH tunnel.
After all of that, you'll have a server running on your computer (hostname127.0.0.1, port 3306 -- or 3333 or something else if you have MySQL running locally),which will forward everything on to the MySQL server on PythonAnywhere.
Dbeaver Ssh Download
Using the tunnel
At this point, you should be able to run code that connects to MySQL using this local server.For example, you could use the code that is inside the with
statement in the'From Python code' section above.
One thing to watch out for, however -- some MySQL clients treat the hostname localhost
as special,meaning 'connect to the local server over a domain socket'. What you want to dois force it to connect to your local machine on port 3306, and you can do thisby specifying 127.0.0.1 for the host instead of localhost. For example, to usethe command-line mysql client you'd invoke it like this:
Dbeaver Ssh Tunnel
Or, if you had to use port 3333 because you had a local MySQL server:
Dbeaver Sshj
Many thanks to user Cartroo for the first version of this guide!