我需要在现有的Amazon RDS实例上创建一个具有有限权限的新MySQL用户。在遇到一些错误消息后,我有点能够使用官方MySQL管理员工具执行此操作,用户现在出现在列表中。但是,我无法分配任何架构权限,因为所有用户都显示为灰色。我以实例启动时创建的“主用户”身份登录。不知道从哪里开始。我确实安装了RDS命令行工具,但无法跟踪任何内容。想法
答案 0 :(得分:51)
您最好的选择可能是使用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
答案 1 :(得分:32)
我知道这个帖子已经有几年了,而且我一直在寻找它,所以我希望获得有关AWS RDS和用户权限的更新。
对于任何拥有RDS的用户,您都不能使用GRANT ALL
。当您使用GRANT ALL
语句时,您还尝试提供Global
(因为AWS调用它们Super Permissions
),并且通过AWS RDS系统的设置方式,它们不允许分配全局用户选项。
您必须将权限分解为以下内容:
GRANT SELECT,INSERT,UPDATE,DELETE,DROP on
这将允许您的用户在设置安全设置后能够连接到RDS,以允许从EC2实例或Internet访问。
希望此信息可以帮助遇到与我在AWS RDS系统中遇到的相同问题的其他任何人。
沃尔多
答案 2 :(得分:10)
我是这样创建的:
CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'somepassword';
GRANT SELECT ON mydatabase.* TO 'jeffrey'@'localhost';
但是,AWS拒绝登录该用户。我试图改变管理员权限,但没有成功。我通过mysql workbench将'localhost'更改为'%'。 (或者您可以删除用户并重新创建),例如:
CREATE USER 'jeffrey'@'%' IDENTIFIED BY 'somepassword';
GRANT SELECT ON mydatabase.* TO 'jeffrey'@'%';
然后我才能通过这个新用户登录。
答案 3 :(得分:7)
我最成功地使用MySQL Workbench并针对RDS执行原始SQL:
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';
答案 4 :(得分:5)
我使用过mySQL工作台,它工作正常。只需转到管理/用户和权限,按"添加帐户"按钮左下方,并配置。你不能给予SUPER特权,但其余大部分都是