使用PHP连接AWS Lightsail MySQL数据库实例故障排查求助
AWS Lightsail MySQL 与 PHP 连接故障排查指南
一、先解决「Unknown database」核心报错
- 打开Workbench,直接执行
SHOW DATABASES;,复制返回的数据库名称原封不动粘贴到PHP代码里——别手动输入,避免大小写、连字符、隐形空格这类低级错误(Lightsail MySQL对数据库名大小写严格区分,databasename-1和Databasename-1是两个完全不同的库)。 - 检查PHP代码里数据库名的引号:别多打、少打引号,也别在引号前后加多余空格。
二、核对Lightsail数据库的访问权限
- 确认Lightsail实例的内网IP在数据库的允许连接列表里:
- 登录Lightsail控制台,进入你的数据库管理页。
- 点「Connect」标签,看「Allowed connections」里有没有实例的私有IP(不是公网IP),没有的话直接添加。
- 检查数据库用户的权限:在Workbench里执行
确保结果里有SHOW GRANTS FOR '你的用户名'@'%';GRANT ALL PRIVILEGES ONDatabasename-1.* TO '你的用户名'@'%';(至少要有读写目标库的权限)。如果没有,执行授权语句:GRANT ALL PRIVILEGES ON `Databasename-1`.* TO '你的用户名'@'%'; FLUSH PRIVILEGES;
三、检查PHP连接代码的细节
- 用数据库的内网端点连接:Lightsail实例和同区域的数据库内网互通,内网端点在数据库控制台「Connect」标签里,别用公网端点,避免权限限制和网络问题。
- 确认PHP的MySQL扩展已安装:在实例里建个
phpinfo.php,内容写<?php phpinfo(); ?>,访问这个页面看有没有mysqli或PDO_MySQL模块。没有的话按系统安装:- Ubuntu/Debian:
sudo apt-get install php-mysql - CentOS/RHEL:
sudo yum install php-mysqlnd
- Ubuntu/Debian:
- 打印完整错误信息:修改PHP代码,把错误详情打出来,别只看模糊的报错码:
$conn = mysqli_connect('内网端点', '用户名', '密码', '数据库名'); if (!$conn) { die('连接失败: ' . mysqli_connect_errno() . ' - ' . mysqli_connect_error()); }
四、排查网络与防火墙
- 检查Lightsail实例的出站防火墙:进入实例管理页的「Networking」标签,看「Firewall」的出站规则,确保允许3306端口(MySQL默认端口)的出站请求。
- 测试实例到数据库的连通性:在实例终端执行
telnet 数据库内网端点 3306或nc -zv 数据库内网端点 3306,连不上的话说明网络不通,检查实例和数据库是否在同一区域/可用区,或者VPC配置是否有问题。
五、重载配置清除缓存
- 重启Lightsail数据库:在数据库控制台「Connect」标签里找重启按钮,确保权限修改生效。
- 重启PHP-FPM服务:如果开了OPcache缓存,重启服务清除缓存:
- Ubuntu/Debian:
sudo systemctl restart php-fpm - CentOS/RHEL:
sudo systemctl restart php-fpm
- Ubuntu/Debian:
内容的提问来源于stack exchange,提问作者turkeyhundt
相关产品推荐
相关产品推荐

