mysql - 在 RDS for MySQL 中创建没有权限的用户失败,错误 1396

标签 mysql database amazon-web-services amazon-rds

<分区>

在完成使用 RDS 工具在 AWS 上创建数据库实例的所有操作后,我已经能够通过 MySQL Workbench 访问数据库。我使用了在创建实例时选择的主用户名和密码。

但是我希望创建具有受限权限的新用户并且如果不返回 error 似乎无法实现此目的.

enter image description here

如您所见,我已经通过 Workbench 和 gitbash 进行了尝试,并收到了链接错误。

Here's界面的图像。我已经尝试创建一个具有零权限的用户并且仍然是相同的错误消息。 我知道不能在 RDS 中授予 SUPER 权限。创建用户失败,没有任何授权。

我尝试为其创建新用户的数据库是空的,我目前使用的是默认 VPC。不确定其中任何一个是否会影响这一点。

感谢任何帮助!

我还没有设置任何 EC2 实例或 BD 安全组,不确定这是否也相关(即使我打算在 VPC 中设置)。

最佳答案

这与安全组无关。您的 RDS 实例实际上并不知道它们——它们仅控制对 AWS 网络中在 TCP 层运行 RDS 实例的主机的访问。

关于您的问题——我认为您会发现您确实设法创建了用户:

mysql> CREATE USER 'stackoverflow'@'%';
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE USER 'stackoverflow'@'%';
ERROR 1396 (HY000): Operation CREATE USER failed for 'stackoverflow'@'%'

mysql> CREATE USER 'stackoverflow';
ERROR 1396 (HY000): Operation CREATE USER failed for 'stackoverflow'@'%'

mysql>

查看服务器上的用户帐户SELECT * FROM mysql.user;

注意用户'stackoverflow''stackoverflow'@'%'指的是同一个用户,其中@'%'表示用户的登录权限不受源 IP 地址或主机 MySQL 的限制(它可以而且仍然会受到安全组设置的限制,我将在下面更详细地展示)。

mysql.user 表包含服务器知道的所有帐户。此表(和 several other grant tables)可以手动操作,但最好使用GRANTREVOKECREATE USERDROP USER 语句。


以后可能会有帮助...如果您以无法连接到服务器的方式设置安全组(因为您的源 IP 地址不被允许),这不会导致任何行为改变MySQL 的一部分——无论用户名和密码如何,您的连接都会超时,永远不会真正到达服务器。

这是一个常见的错误,当他们遇到这个特定问题时,完全太多人(包括 SO 上的这里)开始在服务器上寻找权限 - 不要这样做——如果您看到以下行为,问题总是网络连接之一:

$ mysql -h my-rds-with-security-group-too-restrictive.jozxyqk.us-west-2.rds.amazonaws.com

ERROR 2003 (HY000): Can't connect to MySQL server on 'my-rds-with...' (110)

ERROR 2003 可能意味着几件事……但钱在行尾。末尾的代码 (110) 告诉您您永远无法到达服务器 - 如果您看到这个确切的代码代码,那不是权限问题。查一下:

$ perror 110
OS error code 110:  Connection timed out

(显示了 Linux 错误代码 110;Mac 可能是相同的代码,因为我怀疑它是标准的 POSIX 错误代码,而 Windows 自己编写。我相信它是 10060 在 Windows 上传达相同的含义。)

关于mysql - 在 RDS for MySQL 中创建没有权限的用户失败,错误 1396,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31031997/

相关文章:

git - 如何从远程 ssh 传入 git rsa 密码?

mysql - 尽管我能够连接并插入,但无法从 Lambda 更新 MySQL (AWS RDS) 表

php - 当我有一个 mysqli_multi_query 后跟一个 mysqli_query 时,第二个查询失败

php - MySQL/PHP如何在WHERE子句中包含数组

database - 以数据库用户身份登录 Oracle Application Express

database - 南迁报错: NoMigrations exception for django. contrib.auth

mysql - 如何根据 JPQL 选择查询中新创建对象的值对实体进行排序?

database - 在 APEX 5.1 的交互式报告中选中相关复选框时如何启用选择列表

ios - DynamoDB 获取项目计数

javascript - 微服务架构和MySQL数据库分页