69

我需要在现有 Amazon RDS 实例上创建一个具有有限权限的新 MySQL 用户。在遇到几条错误消息后,我可以使用官方的 MySQL 管理员工具执行此操作,并且用户现在出现在列表中。但是,我无法分配任何架构权限,因为所有用户都是灰色的。我以实例启动时创建的“主用户”身份登录。不知道从这里去哪里。我确实安装了 RDS 命令行工具,但也无法在那里找到任何东西。想法

4

5 回答 5

69

您最好的选择可能是使用 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

于 2012-05-09T01:50:56.277 回答
46

我知道这个线程已经有几年的历史了,而且我一直在寻找它,所以我想了解有关 AWS RDS 和用户权限的更新。

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

您必须打破以下权限:

GRANT SELECT,INSERT,UPDATE,DELETE,DROP on

一旦设置了安全设置以允许从您的 EC2 实例或 Internet 进行访问,这将允许您的用户连接到 RDS。

希望此信息对遇到与我在 AWS RDS 系统中看到的相同问题的其他人有所帮助。

沃尔多

于 2016-05-11T20:23:10.983 回答
16

我是这样创建的:

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

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

另外:完成此更改后,您的数据库就允许从任何 ip 连接。如果您需要提高安全性并限制访问 ip(例如:如果这是一个临时数据库),您可以在服务器的 my.cnf 文件中设置绑定地址。

绑定地址 = your.ip.add.ress

在此处输入链接描述

于 2017-02-20T11:58:10.243 回答
9

我使用 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';
于 2013-04-12T21:03:44.333 回答
7

我使用了 mySQL 工作台,它工作正常。只需转到管理/用户和权限,按左下角的“添加帐户”按钮,然后进行配置。您不能授予 SUPER 特权,但其余大部分

于 2014-07-11T15:58:25.097 回答