在Amazon RDS环境中创build新的MySQL用户

我需要在现有Amazon RDS实例上创build一个具有有限权限的新MySQL用户。 在遇到一对错误消息之后,我可以使用官方的MySQLpipe理员工具来完成这项工作,用户现在出现在列表中。 但是,我无法分配任何模式特权,因为所有用户都灰显。 我以实例启动时创build的“主用户”身份login。 不知道从哪里去。 我确实安装了RDS命令行工具,但无法追踪任何内容。 思路

最好的办法是用mysql命令行客户端连接数据库,然后调用SQL命令创build一个新用户并为其分配权限。

例如,你可能运行这样的东西:

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

用户创build文档: http : //dev.mysql.com/doc/refman/5.5/en/create-user.html

特权授予文档: http : //dev.mysql.com/doc/refman/5.5/en/grant.html

我知道这个线程已经两三年了,我一直在找它,所以我想要更新一下AWS RDS和用户权限。

对于任何使用RDS的用户,您都不能使用GRANT ALL 。 当您使用GRANT ALL语句时,您也尝试提供Global (作为AWS调用它们的Super Permissions ),并且以AWS RDS系统的设置方式,它们不允许将全局选项分配给用户。

你必须打破以下权限:

GRANT SELECT,INSERT,UPDATE,DELETE,DROP on

这将允许您的用户能够连接到RDS,一旦安全设置被设置为允许从您的EC2实例或从互联网访问。

希望这些信息能够帮助那些遇到与AWS RDS系统相同的问题的人员。

沃尔多

我最成功地使用MySQL Workbench并针对RDS执行原始SQL:

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

更大的问题是权限。 最初我尝试过:

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

…这会导致Access Denied错误。

 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'; 

我已经使用MySQL的工作台,它工作正常。 只需进入pipe理/用户和权限,按左下方的“添加帐户”button,然后进行configuration。 你不能给予超级特权,但其余的大部分权限

我创build像这样:

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

但是之后,AWS拒绝login该用户。 我试图改变pipe理员权限,但没有成功。 我通过mysql工作台将“localhost”更改为“%” 。 (或者你可以删除用户并重新创build),如:

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

然后只有我能够通过这个新用户login。