gpt4 book ai didi

mysql - 在 amazon RDS 上的 mysql/mariadb 上创建用户时出现问题

转载 作者:行者123 更新时间:2023-11-29 21:16:13 26 4
gpt4 key购买 nike

仍在尝试弄清楚 AWS 上的 RDS。我设置了一个可以通过 SSH 连接的 EC2 实例。然后我创建了 MariaDB 的 RDS 实例。我可以通过 SSH 连接到我的 EC2,然后使用我在设置 RDS 实例时创建的用户名/密码,使用 MySQL 连接到 RDS 实例。当我查看用户时,我看到

'myusername'@'%' 
'rdsadmin'@'localhost'

以“myusername”身份登录 mysql 数据库时,我创建了一个具有更多有限主机的新用户:

CREATE USER 'otheruser'@'nnn.nnn.nnn.nnn' IDENTIFIED BY 'good_password'

到目前为止没有问题。现在授予“其他用户”一些权限:

GRANT ALL PRIVILEGES ON mydatabase.* TO 'otheruser'@'nnn.nnn.nnn.nnn' IDENTIFIED BY 'same_password';

似乎有效。从我的 IP 地址,我可以使用 Navicat 作为“其他用户”连接到“mydatabase”,并且可以毫无问题地创建表、添加数据、删除表、创建索引。但是,当我这样做时,所有权限都显示“N”:

SELECT * FROM mysql.user WHERE user = 'otheruser'\G

如果我查看 information_schema,唯一的权限是“使用”

SELECT * FROM information_schema.user_privileges;

如果在 RDS 设置期间创建我的 root 用户,我尝试为“其他用户”指定特定权限,则会收到访问被拒绝错误。

因此,如果所有权限都显示“N”,而 information_scheme 仅显示“使用情况”,Navicat 如何能够以该用户身份进行连接并执行几乎所有操作?

在 RDS 实例上创建受限用户的正确方法是什么?与“rdsadmin”@“localhost”相比,在实例创建过程中创建的用户似乎略有限制,但据我所知,现在有办法从 localhost 连接到 RDS?

最佳答案

mysql.user表中的权限是全局权限。它们适用于服务器上的所有数据库,无论是现在还是将来。您没有发表任何声明来批准其中任何一项。

SELECT * FROM mysql.db; 将显示在哪里可以找到您授予的 navicat 用户的权限。

您可以在 RDS 中GRANT ALL PRIVILEGES ON some_database.*,这只会授予该数据库的数据库级别权限。

...但是您不能GRANT ALL PRIVILEGES ON *.*,因为您(主用户)不拥有所有全局权限。 RDS 不会将它们提供给您。要进行全局授权,您必须授予特定权限。

显示 'myusername@'%' 的资助;

您看到的列出的权限是您可以授予的唯一全局(服务器级别)权限。

是的,您可以使用 RDS 提供的权限做的事情是有限的,大概是因为它是一项托管服务......所以他们不希望您能够破坏他们必须为您修复的任何内容。 ..他们会这样做,因为这是一项托管服务。这是 RDS 的缺点之一。您可以牺牲一些灵 active 来换取易于管理(时间点恢复、只读副本的创建/监控/销毁、备份快照等)。

rdsadmin@localhost 是 RDS 基础设施用于管理和监控您的实例的帐户。这就是为什么它拥有所有这些特权。你是对的——你无法从本地主机登录。只有RDS监管进程可以。

关于mysql - 在 amazon RDS 上的 mysql/mariadb 上创建用户时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35925522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com