2016-08-30 44 views
0

我正在開發一個django應用程序,其中存在我的MySQL數據庫。 我的django應用程序和數據庫設置在一臺機器上。如何在LAMP(Python)堆棧中打開遠程MySQL連接

現在我有2個其他機器運行一個腳本,需要遠程連接到我的主機中的MySQL數據庫。

所以在我的主機。我已經做到了這一點:

sudo nano /etc/mysql/my.cnf 

然後通過運行改變

bind-address   = 127.0.0.1 

bind-address   = [my public ip address] 

在那之後,我打開,通過我的防火牆 到我的數據庫端口的遠程訪問

sudo ufw allow 3306/tcp 
sudo service ufw restart 

之後,我跑我的mysql和運行以下命令:

CREATE USER [email protected][main machine ip address] IDENTIFIED BY 'my password'; 

GRANT ALL PRIVILEGES ON * . * TO [email protected][main machine ip address]; 

FLUSH PRIVILEGES; 

現在,當我試圖從桌面應用程序使用遠程連接到我的數據庫:

用戶名:NEWUSER @ [我的公網IP地址]

密碼:MY_PASSWORD

端口:3306

數據庫:我的數據庫名

主機:[我的公共IP地址]

它沒有連接,並給出了我們的錯誤'訪問被拒絕'。還有什麼我需要做的,以使其工作?任何想法?

UPDATE:

我試圖使用從我的其他服務器通過命令行來連接到主服務器:

mysql -u newuser -p -h [my main server ip address]

而且

mysql -u [email protected][my main server ip address] -p -h [my main server ip address] 

它給我這個錯誤:主機'[我的本地IP地址]'不允許連接到這個MySQL服務器

回答

1

您爲遠程連接所做的設置看起來不錯(儘管您沒有提及重新啓動mysql,但我會認爲這樣做已完成)。此外,我假設沒有NAT,並且涉及的所有機器都直接連接到互聯網(ifconfig顯示WAN IP)。

我建議嘗試連接mysql命令行客戶端 - 它可能會提供更清晰的錯誤消息。雖然「訪問被拒絕」通常意味着不正確的密碼。 I 認爲當找不到用戶名@主機名時,會出現不同的錯誤消息。

+0

好的。所以我試圖通過這個服務器通過命令行從我的其他服務器連接。它給了我這個錯誤:主機'[我的本地IP地址]'不允許連接到這個MySQL服務器 – Elisha512

1

而不是做機器ip地址,允許任何主機'用戶'@'%',看看它是否工作。

如果有,請檢查日誌以查看您的主機名顯示在服務器上。

更改綁定地址不是必需的。