2012-07-04 132 views
4

我在從另一臺EC2服務器訪問我的一臺Amazon EC2服務器上的mysql數據庫時遇到問題。我通過各種文章關於提供適當的權限爲MySQL從外部訪問的IP地址看,這裏是我遵循的步驟:1130主機'amazon-ec2-ip'不允許連接到這臺MySQL服務器

  1. 打開3306端口上我的主機的EC2實例,以允許外部MySQL連接。
  2. 在文件/etc/mysql/my.cnf中,將「綁定地址」從「127.0.0.1」更改爲「0.0.0.0」。
  3. 使用root打開mysql,並執行以下命令: 在上授予所有特權。 to worker @'ec2-ip-address'IDENTIFIED BY'password';

按照所有的博客/我讀的文章,這應該已經解決了這個問題,但我不斷收到以下錯誤:

1130 Host 'amazon-ec2-ip' is not allowed to connect to this MySQL server 

我提供的EC2實例的IP地址是創建實例時生成的彈性IP。爲了驗證問題是否特定於EC2,我嘗試對不同的「靜態IP地址」執行命令「3」。現在,這對我很有用(即,我能夠從該遠程服務器登錄到mysql主機),因此可以確定上述步驟是正確的。

爲什麼亞馬遜EC2的IP地址不工作?

+0

愚蠢的問題,但你是'EC2-IP地址'你授予特權和'亞馬遜-EC2 -IP'在錯誤之一和相同? – eggyal

+0

@eggyal:你呀...他們是一樣的....我的壞在這裏! –

+0

只需要添加一條評論來澄清 - 我在這裏提到的「靜態ip」地址....不是EC2機器。這是另一個linode實例。我甚至試圖從另一個EC2實例,它有一個「靜態IP地址」,但也沒有工作連接! –

回答

2

發佈這個問題後,我工作時,意識到我甚至無法ping通EC2服務器或telnet到它。所以基本的東西必須是錯的。最後一位朋友幫我解決了這個問題。正如我所料,這個問題對於EC2非常具體。

,具體情況如下:

當我們創建一個EC2實例,我們得到它類似於一個外部IP地址:EC2-XX-XXX-XXX-XX.ap一南1.compute。 amazonaws.com

雖然設置權限在mysql我被授予的權限以上的IP地址,即:

GRANT ALL PRIVILEGES on . to [email protected]'ec2-XX-XXX-XXX-XX.ap-southeast1.compute.amazonaws.com' IDENTIFIED BY 'password'; 

當您嘗試從其他地方到一個EC2實例通信。這不工作EC2實例。對於這一點,你需要提供EC2實例的「內部IP地址」,可以使用ip命令可以找到:

IP一:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
inet 127.0.0.1/8 scope host lo 
inet6 ::1/128 scope host 
valid_lft forever preferred_lft forever 

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 
link/ether 12:31:41:02:58:47 brd ff:ff:ff:ff:ff:ff 
inet **XX.XX.XX.XXX/23** brd YY.YYY.YY.YYY scope global eth0 
inet6 fe80::1031:41ff:fe02:5847/64 scope link 
valid_lft forever preferred_lft forever 

得到的東西正常工作,您需要將權限授予IP地址 - 「XX.XXX.XX.XXX/23」,並且它應該可以工作。同樣,在連接到「mysql」數據庫時,提供給mysql命令的主機名也應該是「internal ip address「of the host EC2 instance。

1

我也遇到過類似的問題,只使用DNS名稱的數字部分,比如說公有DNS名稱是ec2-13-114-245 -645.compute-1.amazonaws.com然後只使用13.114.245.645連接到該實例。

希望它有幫助。

相關問題