我需要在现有 Amazon RDS 实例上创建一个具有有限权限的新 MySQL 用户。在遇到几条错误消息后,我可以使用官方的 MySQL 管理员工具执行此操作,并且用户现在出现在列表中。但是,我无法分配任何架构权限,因为所有用户都是灰色的。我以实例启动时创建的“主用户”身份登录。不知道从这里去哪里。我确实安装了 RDS 命令行工具,但也无法在那里找到任何东西。想法
5 回答
您最好的选择可能是使用 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
我知道这个线程已经有几年的历史了,而且我一直在寻找它,所以我想了解有关 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 系统中看到的相同问题的其他人有所帮助。
沃尔多
我是这样创建的:
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
我使用 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';
我使用了 mySQL 工作台,它工作正常。只需转到管理/用户和权限,按左下角的“添加帐户”按钮,然后进行配置。您不能授予 SUPER 特权,但其余大部分