在完成使用 RDS 工具在 AWS 上创建数据库实例的所有操作后,我已经能够通过 MySQL Workbench 访问数据库。我使用了在创建实例时选择的主用户名和密码。
但是我希望创建具有受限权限的新用户并且如果不返回 error 似乎无法实现此目的.
如您所见,我已经通过 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)可以手动操作,但最好使用GRANT
、REVOKE
、CREATE USER
和 DROP 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 上传达相同的含义。)