2012-04-17 41 views
41

我需要在現有的亞馬遜RDS實例創建具有有限權限的新的MySQL用戶。在遇到一對錯誤消息後,我可以使用官方的MySQL管理員工具完成這項工作,用戶現在出現在列表中。但是,我無法分配任何模式特權,因爲所有用戶都變灰了。我以實例啓動時創建的「主用戶」身份登錄。不知道該從哪裏出發。我確實安裝了RDS命令行工具,但無法追蹤任何內容。思想創建一個新的MySQL用戶在亞馬遜RDS環境

回答

39

您最好的選擇可能是用mysql命令行客戶端連接到數據庫,並調用SQL命令來創建一個新用戶並分配給他的特權。

例如,你可能會喜歡這個運行的東西:

mysql -u [your_master_username] -p -h YOURRDSENDPOINT.rds.amazonaws.com 

CREATE USER 'jeffrey'@'%' IDENTIFIED BY 'somepassword'; 
GRANT SELECT ON [your_database].[some_table] TO 'jeffrey'@'%'; 

在Windows下你可以使用客戶端的mysql.exe,無論是。

有用的文檔

AWS RDS安全組文檔(混亂的公共區域):http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_WorkingWithSecurityGroups.html

用戶創建的文件:http://dev.mysql.com/doc/refman/5.5/en/create-user.html

權限授予文件:http://dev.mysql.com/doc/refman/5.5/en/grant.html

+0

只是一個問題。由於主機YOURRDSENDPOINT.rds.amazonaws.com,授予權限到本地主機的作品?我一直在試圖獲得沒有成功 – nightgaunt 2014-02-20 06:32:15

+0

相當長一段時間,這是隻是作爲示例提供這個工作,我會更新的答案使用通配符主機名。 – andebauchery 2014-02-20 17:18:08

7

我使用MySQL Workbench和執行原始SQL對RDS最成功的:

CREATE USER 'foo'@'localhost' IDENTIFIED BY 'password'; 

更大的問題是權限。最初我嘗試過:

Grant ALL on *.* to 'foo'@'localhost' 

...這會導致訪問被拒絕錯誤。

Error Code: 1045. Access denied for user 'foo'@'%' (using password: YES) 

麻煩的權限是「超級」的RDS不給我,反過來我不能同意。其結果是,我的手被卡住做權限:

Grant SELECT on *.* to 'foo'@'localhost'; 
Grant INSERT on *.* to 'foo'@'localhost'; 
Grant CREATE on *.* to 'foo'@'localhost'; 
+3

如果您授予所有的yourdatabase *爲「富」 @「localhost」的,你可能會獲得更大的成功。 *將包括系統數據庫(模式)。 – Mike 2013-07-17 21:19:14

+0

'GRANT USAGE ON *。* TO'foo'@'localhost''在rds mariadb上測試過,我認爲mysql應該是一樣的。請參閱[Amazon RDS上的MySQL](http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html) – Leonmax 2017-07-20 09:39:35

5

我已經使用MySQL工作臺,它工作正常。只需進入管理/用戶和權限,按左下方的「添加帳戶」按鈕,然後進行配置。您不能提供SUPER權限,但其餘大部分都是

14

我知道這個線程已經有兩三年了,並且我一直在找它,所以我想要獲得有關AWS RDS和用戶權限的更新。

不能用於與RDS任何用戶使用GRANT ALL。當您使用GRANT ALL語句,你也試圖提供Global(如AWS稱他們Super Permissions),並與該AWS RDS系統是建立他們不允許用戶全局選項的分配方式。

你必須打出來的權限如下:

GRANT SELECT,INSERT,UPDATE,DELETE,DROP on

這將使你的用戶能夠連接到RDS一旦安全設置設置爲允許從您的EC2實例訪問或來自互聯網。

希望這個信息可以幫助其他人,運行到,我是與AWS RDS系統看到了同樣的問題。

金都

+0

好的解釋,歡呼聲。 – dkanejs 2016-07-04 16:09:41

+0

它也節省了我。我完全沮喪,爲什麼在GRANT ALL後我仍然無法連接。現在很清楚。 – 2017-06-08 02:46:44

+0

好點!錯誤1045(28000):用戶'root'@'%'訪問被拒絕(使用密碼:YES)' – crollywood 2017-07-12 14:18:53

5

我創造這樣的:

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'somepassword'; 
GRANT SELECT ON mydatabase.* TO 'jeffrey'@'localhost'; 

但後來,AWS拒絕登錄到該用戶。我試圖改變管理員權限,但沒有成功。我變化通過MySQL工作臺的「localhost」到「%」。 (或者你可以刪除該用戶並重新創建),如:

CREATE USER 'jeffrey'@'%' IDENTIFIED BY 'somepassword'; 
GRANT SELECT ON mydatabase.* TO 'jeffrey'@'%'; 

那麼只有我能夠通過這個新的用戶來洛。