无需编辑my.cnf即可访问远程MySQL服务器

时间:2013-07-01 16:30:20

标签: mysql django

我想将我的Django应用程序(托管在VPS上)连接到托管在另一台具有更多内存的服务器上的数据库,这样我就可以运行东西并将数据添加到数据库中,而不会因为使用太多内存而被杀死在我的VPS上。我看到的有关此内容的内容(例如,How to connect to MySQL server on another host?)都涉及修改my.cnf和更改bind-address行。我a)没有root权限来执行此操作,并且b)不希望将其他用户的MySQL dbs暴露给潜在的安全风险。我尝试修改~/.my.cnf来更改bind-address内容,但这似乎不起作用。

我还找到了http://www.rackspace.com/knowledge_center/article/mysql-connect-to-your-database-remotely,建议创建'user'@'remote-ip-address'然后grant该用户权限。我试过了,但是当我尝试ERROR 2003 (HY000): Can't connect to MySQL server on '(the server's address)' (110)时,我会继续mysql -u username -p -h (the server's address)

我可以访问MySQL的root用户,但在我想要设置数据库的服务器上没有其他管理员权限。有没有办法配置东西,以便Django可以访问这个远程数据库,而无需直接编辑/etc/mysql/my.cnf

2 个答案:

答案 0 :(得分:1)

bind-address没有指定哪些IP可以连接到该服务器,但是哪个地址是MySQL正在侦听的。所以,只需将其设置为0.0.0.0即可。请确保您拥有该地址的用户帐户。检查mysql.user表。

解决root-access事务: *如果您手动安装了mysql,则您具有root访问权限。 *如果你没有手动安装mysql,但它是VPS托管提供的服务,那么bind-address应该是0.0.0.0(或者至少不是127.0.0.1)。如果情况并非如此,请与他们联系,因为他们的情况非常糟糕。

希望它有所帮助。

编辑,澄清:

MySQL bind-address不是安全约束。如果您想允许某些地址连接到服务器,您应该使用指定的地址创建/授予用户,例如

CREATE USER 'bobdole'@'192.168.10.221';

答案 1 :(得分:0)

相当hacky,但我认为这应该可以通过MySQL Proxy监听公共IP上的非特权端口,将所有查询代理到本地运行的mysqld。