当前位置:论坛首页 > BUG提交 > Linux面板

「远程数据库」修改密码在 MySQL8.x下报错PASSWORD() 语法未适配

发表在 BUG提交昨天 16:13 [复制链接] 1 26

【问题描述】在宝塔面板中对「远程数据库」(经面板连接的远程 MySQL 8.x 服务器)执行用户「修改密码」时,面板报错、无法改密;而同一面板中「本地数据库」的改密在 MySQL 8.0+ 下工作正常。已升级到当前最新正式版,问题依旧。

【环境信息】
- 宝塔面板:当前最新正式版
- 本地数据库:MySQL 8.0+(面板内改密正常)
- 远程数据库:MySQL 8.x(远程服务器,经面板「远程数据库」功能连接)

【复现步骤】
1. 面板 → 数据库 → 远程数据库,添加并连接一台 MySQL 8.x 远程数据库;
2. 在该远程连接下,对某数据库用户执行「修改密码」;
3. 提交后接口返回 SQL 报错。

【报错信息】
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(<密码>) where User='<用户名>'' at line 1

【根因分析】
面板「远程数据库」改密分支仍使用 MySQL 5.7 时代语法:
  UPDATE mysql.user SET Password = PASSWORD('<密码>') WHERE User = '<用户名>';
MySQL 8.0 起已移除 PASSWORD() 函数、mysql.user 表结构也变化,因此触发 1064 语法错误。
对比:面板「本地数据库」改密已适配 8.x(使用 ALTER USER),唯独「远程数据库」分支未适配。

【附带影响】
即便用户在远程服务器用命令行 ALTER USER '<用户>'@'<host>' IDENTIFIED BY '<新密码>'; 成功改密,面板「远程数据库连接」中缓存的仍是旧密码,导致后续自动备份任务连不上远程库(Access denied),备份中断。

【临时绕过方案】
1. 远程服务器命令行执行 ALTER USER 改密;
2. 面板「远程数据库连接」编辑/重新添加,填入新密码同步缓存;
3. 备份任务删除后重建并验证。

【改进建议】
将「远程数据库」改密分支与本地库统一,改用 ALTER USER(MySQL 8.x)或适配语法。
使用道具 举报 只看该作者 回复
发表于 昨天 16:25 | 显示全部楼层
您好,非常感谢反馈和支持!这边已对您的建议进行记录和反馈
后续如需咨询宝塔面板相关问题,可通过官方微信客服进行在线咨询。
操作方式:复制下方链接,在微信中打开: https://docs.bt.cn/wechat-service
进入后即可在线与客服沟通。
感谢您的支持!
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

紧急运维服务

响应时间:3分钟

问题处理方式:宝塔专家1对1服务

工作时间:工作日:9:00 - 18:30

宝塔专业团队为您解决服务器疑难问题

点击联系技术分析

工作时间:09:00至18:30

快速回复 返回顶部 返回列表