在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。