I am having troubles connecting to remote MySQL server from Django. The setup uses multiple databases:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'ldatabase', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': 'luser',
'PASSWORD': 'lpass',
'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '', # Set to empty string for default.
},
'physics': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'rdatabase', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': 'ruser',
'PASSWORD': 'rpass',
'HOST': 'hostname', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '3306', # Set to empty string for default.
}
}
the default DB is running on localhost (aka client) machine and physics is on remote server.
I can successfully connect to remote MySQL server with:
> mysql -u ruser -prpass -h hostname
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 34714
Server version: 5.5.29 MySQL Community Server (GPL)
...
or even from python
> python
Python 2.7.3 (default, Aug 9 2012, 17:23:57)
[GCC 4.7.1 20120720 (Red Hat 4.7.1-5)] on linux2
...
>>> import MySQLdb
>>> con = MySQLdb.connect(host='hostname', port=3306, user='ruser', passwd='rpass', db='rdatabase')
>>> cursor = con.cursor()
>>> cursor.execute('select * from rdatabase.labs')
425L
However connection from Django fails with:
Exception Value: (2003, "Can't connect to MySQL server on 'hostname' (13)")
In fact, I've tested this setup on my laptop: laptop was client and remote MySQL server has the same settings. It works fine.
Please, help with this issue as I have run out of ideas. Maybe there some kind of hidden Django setting on the client machine that I am missing?
Find client and server configurations below.
Thanks.
client setup
> python
Python 2.7.3 (default, Aug 9 2012, 17:23:57)
[GCC 4.7.1 20120720 (Red Hat 4.7.1-5)] on linux2
...
> pip list
Django (1.5.1)
MySQL-python (1.2.4)
...
> uname --all
Linux <hostname> 3.8.9-200.fc18.x86_64 #1 SMP Fri Apr 26 12:50:07 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
> mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 31
Server version: 5.5.31 MySQL Community Server (GPL)
server setup
> uname --all
Linux <hostname> 3.6.10-2.fc16.x86_64 #1 SMP Tue Dec 11 18:55:03 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
> mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 34712
Server version: 5.5.29 MySQL Community Server (GPL)
> cat /etc/mysql.cnf
[mysqld]
datadir =/var/lib/mysql
socket =/var/lib/mysql/mysql.sock
#user =mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#default-character-set=utf8
max_allowed_packet = 1048576000
[mysqld_safe]
log-error =/var/log/mysqld.log
pid-file =/var/run/mysqld/mysqld.pid
[client]
#default-character-set=utf8