Discuz 安装出现数据库连接失败 error code 1045 通常是因为 MySQL 用户密码错误、主机地址配置错误或数据库用户权限不足。最推荐的处理方向是先在服务器命令行验证账号密码能否登录,再检查 Discuz 安装表单中的数据库主机填写项,风险边界在于不要直接修改生产环境数据库 root 密码以免引发其他业务中断。
先说结论:Discuz 安装报错 1045 属于 MySQL 认证失败,需优先排除账号密码和主机配置问题,确认数据库服务可用后再重新提交安装表单。
- 先确认:MySQL 服务状态正常且账号密码无误。
- 先处理:通过命令行排除连接问题,再修正安装配置。
- 再验证:重新运行安装程序直到进入下一步。
命令速用版
在服务器终端执行以下命令,验证账号密码是否能通过 MySQL 认证:
mysql -u 数据库用户名 -p -h 数据库主机地址输入密码后若能进入 mysql> 提示符,说明账号密码正确;若仍报 1045,则需重置密码或检查用户主机权限。
为什么会这样
Error 1045 是 MySQL 数据库的标准错误码,含义为 Access denied for user,即服务器拒绝了客户端的连接请求。
Discuz 安装程序通过 PHP 脚本向 MySQL 发起连接,当填写的用户名、密码或主机地址与数据库服务端记录不匹配时,MySQL 返回 1045 错误。常见原因包括密码含有特殊字符导致转义错误、数据库用户没有对应主机的登录权限、或旧版本配置文件残留干扰。
分步处理
步骤 1:命令行验证连接
登录服务器 SSH,使用安装页面填写的相同信息尝试连接数据库。如果命令行也失败,问题出在数据库层面,而非 Discuz 程序。
步骤 2:检查数据库主机填写
在 Discuz 安装界面,数据库主机通常填 localhost。如果 MySQL 用户权限表中 host 字段为 127.0.0.1,则 localhost 可能无法连接。尝试将安装表单中的主机改为 127.0.0.1 测试。
步骤 3:检查用户权限
确保数据库用户拥有对该库的 CREATE、ALTER、SELECT 等权限。如果是新建库,建议暂时赋予 ALL PRIVILEGES 权限,安装完成后再回收。
步骤 4:清理旧配置
如果是重新安装,务必删除 config/config_global.php 和 config/config_ucenter.php 文件,避免旧配置干扰新安装流程。
怎么验证是否生效
刷新 Discuz 安装页面,点击下一步后不再出现 1045 错误提示,且页面正常跳转到数据库表结构安装步骤。同时检查服务器 MySQL 错误日志,确认没有新的 Access denied 记录。
常见坑
- 密码特殊字符:部分特殊字符在 PHP 配置文件中可能需要转义,建议安装阶段使用纯字母数字密码。
- 主机权限混淆:MySQL 中 user@localhost 和 user@127.0.0.1 被视为不同用户,需确保权限表覆盖对应主机。
- 残留配置文件:重装 Discuz 时未删除旧 config 文件,导致程序读取旧密码而非表单新密码。
常见问题
密码有特殊字符会影响吗?
会,建议在安装前暂时修改为纯字母数字组合,安装完成后再改回复杂密码。
数据库主机填什么?
本地数据库填 localhost 或 127.0.0.1,远程数据库填具体 IP 地址。
需要新建数据库吗?
需要,且用户对该库要有全部权限,否则无法创建表结构。
root 用户无法连接怎么办?
检查 MySQL 是否禁止了 root 远程登录,或尝试新建一个专用数据库用户用于 Discuz 连接。
参考来源
- MySQL 官方错误代码说明,Server Error Codes and Messages,https://dev.mysql.com/doc/mysql-errors/8.0/en/server-error-reference.html