简介:TG@luotuoemo
本文由阿里云代理商【聚搜云】撰写
一、检查数据库服务状态
-
确认数据库实例运行状态
- 登录阿里云控制台,进入 RDS 管理控制台。
- 查看目标数据库实例是否处于 运行中 状态。若显示异常(如 “实例锁定”“重启中”),尝试重启实例或联系阿里云客服。
-
检查数据库资源使用情况
- 在 RDS 控制台查看实例的 监控信息(CPU、内存、磁盘空间、连接数等)。
- 若资源使用率过高(如内存不足),可能导致连接失败,需升级实例规格或优化查询。
二、验证网络连接
-
测试数据库端口可达性
-
使用
telnet命令测试数据库端口是否开放:telnet <数据库地址> <端口号> # 例如:telnet rds.mysql.aliyuncs.com 3306- 若提示
无法连接,检查防火墙或安全组是否放行数据库端口(如 3306 用于 MySQL)。
- 若提示
-
-
检查安全组规则
- 进入阿里云控制台,找到数据库实例对应的 安全组。
- 确保安全组允许来自 Web 服务器 IP 地址的数据库端口访问(如添加规则:允许 0.0.0.0/0 或指定 IP 访问 3306 端口)。
三、核对连接参数
-
检查连接字符串 / 配置文件
-
确认数据库连接信息是否正确:
- 主机地址:RDS 实例的内网或外网地址(阿里云控制台可查看)。
- 端口号:默认 3306(MySQL)、1433(SQL Server)等。
- 数据库名:需与实际数据库名称一致。
- 用户名 / 密码:确保无拼写错误,密码未过期。
-
-
测试命令行连接
-
使用数据库客户端工具(如
mysql、sqlcmd)直接连接:mysql -h <数据库地址> -P <端口> -u <用户名> -p # 输入密码后测试连接- 若失败,根据报错信息(如
Access denied)排查权限或密码问题。
- 若失败,根据报错信息(如
-
四、检查权限配置
-
确认数据库账号权限
-
登录 RDS 控制台,进入 账号管理。
-
检查账号是否有目标数据库的访问权限(如
SELECT、INSERT等)。 -
尝试使用
GRANT命令赋予权限:sql
GRANT ALL PRIVILEGES ON <数据库名>.* TO 'user'@'%';
-
-
验证 SSL 连接(若启用)
- 若使用 SSL 加密连接,需确保客户端配置了正确的证书路径,且数据库实例已开启 SSL 功能。
五、排查应用层问题
-
检查应用日志
-
查看 Web 服务器或应用日志(如 Nginx、Apache、PHP 日志),查找具体错误信息(如
PDOException、mysqli_connect()失败)。 -
示例 PHP 错误:
plaintext
SQLSTATE[HY000] [2002] No such file or directory可能是数据库 socket 路径配置错误。
-
-
确认驱动与版本兼容性
- 确保应用使用的数据库驱动(如 MySQLi、ODBC)与数据库版本兼容。
- 例如,MySQL 8.0 需使用支持 caching_sha2_password 认证的驱动。
六、其他常见问题
-
数据库连接数耗尽
- 查看 RDS 控制台的 连接数监控,若达到上限,可临时提升
max_connections参数或优化查询。
- 查看 RDS 控制台的 连接数监控,若达到上限,可临时提升
-
DNS 解析问题
- 检查数据库地址的 DNS 解析是否正常(使用
nslookup或dig命令测试)。
- 检查数据库地址的 DNS 解析是否正常(使用
-
地域 / 网络类型不匹配
- 确保 Web 服务器与数据库位于同一地域,且使用内网地址以避免跨地域延迟或网络问题。
七、联系技术支持
若以上步骤均无法解决,可通过阿里云控制台提交工单,并提供以下信息:
- 数据库实例 ID、Web 服务器 IP。
- 完整的错误日志和连接尝试记录。
- 已执行的排查步骤及结果。