AWS RDS - 使用 GRANT ALL PRIVILEGES ON the_db.* TO 'the_user'@'%' 时拒绝管理员用户访问

Oma*_*ado 10 mysql amazon-web-services amazon-rds mariadb

当我们尝试为特定数据库的用户授予所有权限时,数据库的管理员(超级用户)用户收到以下错误。

Access denied for user 'admin'@'%' to database 'the_Db'
Run Code Online (Sandbox Code Playgroud)

在 stackoverflow 中查看其他问题后,我找不到解决方案。我已经尝试更改 * -> % 没有成功,这是以下来源中建议的方法:

http://www.fidian.com/problems-only-tyler-has/using-grant-all-with-amazons-mysql-rds

我认为 RDS 上有一个底层配置,所以我不能为用户授予所有权限,但我不知道如何检测正在发生的事情。

更新

在做了一些解决方法之后,我注意到“删除版本控制行”权限是导致问题的原因。我可以添加除那个之外的所有权限。

https://mariadb.com/kb/en/grant/

因此,我可以授予其他权限的唯一“方式”是使用这样的脚本来指定每个权限。

GRANT Alter ON *.* TO 'user_some_app'@'%';
GRANT Create ON *.* TO 'user_some_app'@'%';  
GRANT Create view ON *.* TO 'user_some_app'@'%';
GRANT Delete ON *.* TO 'user_some_app'@'%';
GRANT Drop ON *.* TO 'user_some_app'@'%';
GRANT Grant option ON *.* TO 'user_some_app'@'%';
GRANT Index ON *.* TO 'user_some_app'@'%';
GRANT Insert ON *.* TO 'user_some_app'@'%';
GRANT References ON *.* TO 'user_some_app'@'%';
GRANT Select ON *.* TO 'user_some_app'@'%';
GRANT Show view ON *.* TO 'user_some_app'@'%';
GRANT Trigger ON *.* TO 'user_some_app'@'%';
GRANT Update ON *.* TO 'user_some_app'@'%';
GRANT Alter routine ON *.* TO 'user_some_app'@'%';
GRANT Create routine ON *.* TO 'user_some_app'@'%';
GRANT Create temporary tables ON *.* TO 'user_some_app'@'%';
GRANT Execute ON *.* TO 'user_some_app'@'%';
GRANT Lock tables ON *.* TO 'user_some_app'@'%';
Run Code Online (Sandbox Code Playgroud)

Ama*_*man 9

尝试这个

mysql -h your-rds-host-name -P 3306 -u rds-master-user -p

CREATE DATABASE sitedb;

CREATE USER 'siteuser'@'%' IDENTIFIED BY 'Password';
Run Code Online (Sandbox Code Playgroud)

// 对于 MySQL 5.7 或更低版本

GRANT ALL ON sitedb.* TO 'siteuser'@'%' IDENTIFIED BY 'Password' WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)

// MariaDB 10 向上

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, CREATE VIEW, EVENT, TRIGGER, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE ON `sitedb`.* TO 'siteuser'@'%';
FLUSH PRIVILEGES;
EXIT
Run Code Online (Sandbox Code Playgroud)

  • 根据https://aws.amazon.com/premiumsupport/knowledge-center/duplicate-master-user-mysql/,向另一个用户授予所有权限的完整命令是“GRANT SELECT、INSERT、UPDATE、DELETE、CREATE、DROP” 、重新加载、处理、引用、索引、更改、显示数据库、创建临时表、锁定表、执行、复制从站、复制客户端、创建视图、显示视图、创建例程、更改例程、创建用​​户、事件、触发*。 * TO 'new_master_user'@'%' 带授予选项;` (3认同)