我想将我的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
?
答案 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。