2013-07-01 16 views
0

我想將我的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的事情,但這似乎不起作用。在不編輯my.conf的情況下訪問遠程MySQL服務器

我還發現http://www.rackspace.com/knowledge_center/article/mysql-connect-to-your-database-remotely,它建議創建'user'@'remote-ip-address'然後grant該用戶權限。我嘗試過,但當我嘗試mysql -u username -p -h (the server's address)時,我總是收到ERROR 2003 (HY000): Can't connect to MySQL server on '(the server's address)' (110)

我有權訪問MySQL的root用戶,但在要設置數據庫的服務器上沒有其他管理員權限。有什麼辦法可以配置,讓Django無需直接編輯就可以訪問這個遠程數據庫/etc/mysql/my.cnf

回答

1

bind-address沒有指定哪些IP可以連接到該服務器,但哪些地址是MySQL正在監聽的。所以,只需將其設置爲0.0.0.0即可。請確保你有一個使用該地址的用戶帳戶。檢查mysql.user表。

解決根訪問問題: *如果您手動安裝了mysql,則您擁有root訪問權限。 *如果您沒有手動安裝mysql,但它是由VPS託管提供的服務,則綁定地址應該爲0.0.0.0(或至少不是127.0.0.1)。如果不是這樣,請聯繫他們,因爲他們搞砸了。

希望它有幫助。

編輯,澄清:

MySQL的bind-address不是一個安全約束。如果你要允許一些地址與指定的那個地址連接到您應該創建服務器/授予用戶,這樣

CREATE USER 'bobdole'@'192.168.10.221'; 
+0

我需要將我的VPS上的Django連接到其他服務器上的數據庫。據我所知,更改我的VPS上的MySQL設置將無濟於事,而且我沒有root權限來更改另一臺服務器上的設置(我也不想損害其安全性)。 – swizzard

+0

我編輯了答案來解決您的安全問題。現在,讓我幫你解決你的問題。你現在設置了什麼地址? 'cat /etc/mysql/my.cnf | grep bind' – santiagobasulto

+0

對,我這樣做:'CREATE USER'用戶'@'(VPS IP地址)'','GRANT ALL ON mydb。* to'user'@'(VPS IP address)'IDENTIFIED BY'password' '。但正如我上面所說的,當我嘗試從我的VPS連接到另一臺服務器時,出現'ERROR 2003(HY000)'。 – swizzard

0

而是哈克,但我認爲這應該是可能的MySQL Proxy監聽非特權端口在公共IP上,將所有查詢代理到本地運行的mysqld。