我想对我的 Amazon Aurora MySQL 兼容版数据库集群进行身份验证,但收到“Access denied”(访问被拒绝)错误。
要对 Aurora MySQL 兼容版数据库集群进行身份验证,您可以使用以下选项之一:
出现“Access denied”(访问被拒绝)错误通常是因为您输入了错误的用户名或密码。但是,出现此错误还包括以下其他原因:
有关此错误的更多信息,请参阅 MySQL 文档中的Access Denied(访问被拒绝)部分。
请确认您的数据库实例当前处于 AVAILABLE 状态。有关数据库实例状态的更多信息,请参阅 Amazon Relational Database Service(Amazon RDS)和 Aurora 文档。另请参阅如何解决连接到 Amazon RDS 数据库实例时出现的问题?
密码错误
尝试连接到数据库时,请务必输入正确的用户名和密码。请勿在密码中包含特殊字符。有关更多信息,请参阅如何重置 Amazon RDS 数据库实例的主用户密码?
用户名错误
检查是否存在该用户:
mysql> SELECT user FROM mysql.user WHERE User='username';
如果该用户不存在,则创建一个新用户:
mysql> CREATE USER 'username'@'%' IDENTIFIED BY 'new-password-here';
mysql> FLUSH PRIVILEGES;
有关更多信息,请参阅主用户账户权限。
从错误的主机连接
尝试连接到数据库实例时,请务必指定正确的主机(带有 -h 标志)和端口。查看 Amazon RDS console(Amazon RDS 控制台)上的 Instance(实例)页面,检查您的 Amazon RDS 主机名和端口。有关更多信息,请参阅连接到 Amazon Aurora 数据库集群。
存在该用户,但客户端主机没有连接的权限
检查哪个主机用户/主机 MySQL 允许来自以下的连接:
mysql> SELECT host, user FROM mysql.user WHERE User='username';
然后,使用正确的主机(客户端 IP)创建用户,或者使用 %(通配符)匹配任何可能的 IP 地址:
mysql> CREATE USER 'dbuser'@'%' IDENTIFIED BY 'new-password-here';
客户端必须使用 SSL,但未使用
通过在数据库实例上运行以下查询,检查是否有用户必须使用 SSL:
mysql> SELECT * FROM mysql.user WHERE ssl_type <> '';
如果用户必须使用 SSL,则必须使用 SSL 进行连接。有关更多信息,请参阅 Using SSL/TLS to encrypt a connection to a DB cluster(使用 SSL/TLS 加密与数据库集群的连接)。
重复用户
检查是否有用户的用户名相同:
要解决此问题,请使用其他用户(重复的主用户)或有删除其他用户权限的用户登录。删除次要用户后,第一个用户可以正常连接。
有关更多信息,请参阅如何为运行 MySQL 的 Amazon RDS 数据库实例创建其他主用户?
Bash 正在转换密码中的特殊字符
给密码加上单引号以防止 Bash 转换特殊字符。
连接数据包中未包含正确的信息
获取连接数据包所需的时间超过 connect_timeout秒。与数据库管理员讨论后,您可以调整此数据库的参数值以更好地了解您的查询和工作负载。
max_allowed_packet 变量值太小或者查询需要的内存超过您为数据库实例分配的内存
默认情况下,max_allowed_packet值很小。这使得该值能够捕获可能错误的大型数据包。如果您使用的是大型 BLOB 列或长字符串,则增加 max_allowed_packet 的值。有关更多信息,请参阅为 Amazon RDS for MySQL 配置参数的最佳实践。
要进行连接,请参阅如何允许用户使用其 IAM 凭证向 Amazon RDS MySQL 数据库实例进行身份验证?
如果您无法连接,请参阅为什么在尝试使用 IAM 身份验证连接到 Amazon RDS for MySQL 时会遇到“访问被拒绝”错误?
要进行连接,请参阅如何使用 Amazon RDS 代理连接到我的 Amazon RDS MySQL 数据库实例或 Aurora MySQL 数据库集群?
如果您无法连接,请参阅为什么我无法使用 RDS 代理连接到我的 Amazon RDS 数据库或 Amazon Aurora 数据库实例?
连接到 Amazon Aurora MySQL 数据库集群
适用于 MariaDB、MySQL 和 PostgreSQL 的 IAM 数据库身份验证
使用参数组
如何排查使用 VPC 公有子网或私有子网连接 Amazon RDS 数据库实例时遇到的问题?