Appearance
问题现象
在系统安装引导界面或系统初始化过程中,输入数据库主机、用户名、密码和数据库名后,点击“下一步”或提交时提示: 数据库连接失败、SQLSTATE[HY000] [2002] Connection refused 或 Access denied for user 'xxx'@'localhost'。
根本原因与排查步骤
检查 MySQL 服务运行状态
确保服务器上的 MySQL 服务已正常启动:
bash
systemctl status mysqld
/etc/init.d/mysqld status若未启动,请先在宝塔面板【软件商店】或终端中启动 MySQL 服务。
核对数据库凭证信息
在宝塔面板【数据库】菜单中,确认以下信息完全正确:
- 数据库名:必须已创建对应的数据库(建议字符集选择
utf8mb4,排序规则选择utf8mb4_general_ci)。 - 用户名:对应的数据库访问用户名。
- 密码:数据库用户的密码(注意区分大小写,避免复制时带入空格)。
- 访问权限:本地部署时权限应为
本地服务器(127.0.0.1)或所有人(%)。
主机地址(Host)与端口设置
- 本地数据库:数据库主机推荐填写
127.0.0.1(填写localhost有时会尝试使用 Unix Socket 连接,若 socket 文件路径不一致会导致连接失败)。 - 端口号:默认端口为
3306,若修改过 MySQL 端口请填写实际端口。 - 远程/云数据库(如阿里云 RDS/腾讯云 CDB):需填写云数据库的内网或外网连接地址,并确保在云数据库白名单中放行了当前服务器的 IP。
命令行连通性测试
在服务器终端中直接使用 mysql 命令行客户端进行连接测试:
bash
mysql -h 127.0.0.1 -P 3306 -u 数据库用户名 -p输入密码后若能成功进入 mysql> 交互界面,说明数据库凭证与服务正常。
MySQL 8.0 密码插件兼容性(如适用)
MySQL 8.0 默认使用 caching_sha2_password 认证插件。若 PHP 的 PDO 驱动连接异常,可登录 MySQL 将用户认证插件修改为兼容模式:
sql
ALTER USER '你的用户名'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码';
FLUSH PRIVILEGES;