2013-03-12 125 views
1

我在EC2服務器中有兩個實例,一個實例具有mysql數據庫和內容存儲在其中,另一個實例訪問存儲在第一個實例中的數據。從EC2上的不同實例訪問mysql數據庫

我需要創建一個存儲在數據庫中的只讀訪問權限的用戶。

所以

  1. CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

    grant select on DBname.* to 'chowzter'@'localhost';

錯誤

ERROR 1130 (HY000): Host 'ip-xx-xx-xxx-xxx.ec2.internal' is not allowed to connect to this MySQL server 

2。 CREATE USER 'username'@'ec2-xx-xx-xx-xxx.compute-1.amazonaws.com' IDENTIFIED BY 'password'

grant select on DBname.* to 'username'@'ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com';

這一次使用的IP地址是由命令得到了second instance的內部IP。

ip a

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 -hxx.xx.xxx.xxx -uusername -ppassword

錯誤

ERROR 1045 (28000): Access denied for user 'username'@'ip-xx-xx-xxx-xxx.ec2.internal' (using password: YES) 

任何想法如何解決它?

+0

你在VPC中運行嗎? – Steve 2013-03-12 13:33:11

+0

不是VPC,而是AWS。 – 2013-03-12 13:35:27

回答

1

終於解決了。

首先,我使用%創建了一個用戶。

CREATE USER 'name'@'%' IDENTIFIED BY 'password'; 

然後,您可以授予該用戶權限。

grant select on DBname.* to 'name'@'%'; 

mysql -h xx.xx.xxx.xxx -u user -p 

這使我有權從第二個實例以只讀模式訪問數據庫。

+1

'%'允許從任何IP訪問所述用戶,這使得整個系統不安全。 – codersofthedark 2015-02-26 06:42:02

1

您應該爲任何主機設置您的授權。但是通過授予安全組權限來控制訪問。如果實例停止/重新啓動,內部IP可能會更改。

+0

感謝您的幫助 – 2013-03-14 12:31:44

1

用於連接到MySQL實例從一個不同的情況下,你應該做到以下幾點:

GRANT SELECT ON DBname.* TO 'chowzter'@'xx.xx.xxx.xx' IDENTIFIED BY 'mypassword'; 
FLUSH PRIVILEGES; 

例如:

GRANT SELECT ON facebook.* TO 'zuckerberg'@'10.0.0.420' IDENTIFIED BY 'mysecuredpassword'; 
FLUSH PRIVILEGES; 

你可以通過MySQL文檔下這甚至更好: http://dev.mysql.com/doc/refman/5.1/en/grant.html

這應該是相當多的工作,假設防火牆允許在VPC內訪問,並且您沒有綁定啓用地址。