修复方法:将MySQL的用户名长度限制从32字符增加到80字符或更高。登录MySQL,执行ALTER USER 'username'@'host' IDENTIFIED BY 'password' PASSWORD EXPIRE;然后FLUSH PRIVILEGES;重启MySQL服务。远程连接时,确保用户名不超过80字符,使用mysql --user=shortuser --host=remotehost -p。
CSDN博客
ER_USERNAME_TRUNCATED错误是因为MySQL 8.0版本中用户名长度限制为32字节,新版本扩展到80字节,但旧配置未更新导致截断。解决:升级MySQL到8.0.11+,或修改my.cnf添加default_authentication_plugin=mysql_native_password,重启服务。远程连接失败时,检查auth_pam兼容性。
Stack Overflow
The error ER_USERNAME_TRUNCATED occurs when the username is longer than 32 characters in older MySQL versions. Fix by shortening the username or upgrading MySQL. For remote access, ensure the user is created with GRANT ALL ON *.* TO 'shortuser'@'%' IDENTIFIED BY 'pass'; FLUSH PRIVILEGES;
阿里云开发者社区
MySQL远程连接用户名截断故障排除:1.检查用户名长度,缩短到16字符内;2.使用SET NAMES utf8mb4确保字符编码;3.远程服务器防火墙开放3306端口;4.执行SHOW GRANTS FOR 'user'@'%';确认权限。故障时,重置root密码:mysqld_safe --skip-grant-tables &
知乎专栏
遇到ER_USERNAME_TRUNCATED,原因是插件认证问题。解决方案:ALTER USER 'user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';然后远程测试mysql -h ip -u user -p。如果还是失败,检查mysql.user表中User字段长度。
腾讯云文档
用户名截断导致连接失败的远程处理:登录云服务器,su root,mysql -u root,DROP USER 'longuser'@'%'; CREATE USER 'short'@'%' IDENTIFIED BY 'pass'; GRANT ALL PRIVILEGES ON *.* TO 'short'@'%'; FLUSH PRIVILEGES; 测试连接。
博客园
故障排除指南:1.备份数据mysqldump;2.编辑my.cnf,增加sql_mode=NO_ENGINE_SUBSTITUTION;3.重启systemctl restart mysqld;4.远程用navicat连接时,选择mysql_native_password认证方式,避免caching_sha2_password截断用户名。
FAQ
Q: 为什么MySQL 8.0会出现用户名截断?
A: 新认证插件对用户名有80字节限制,旧用户未迁移。
Q: 远程连接怎么快速修复?
A: 创建短用户名GRANT权限,FLUSH PRIVILEGES。
Q: 防火墙影响吗?
A: 是,开放3306端口ufw allow 3306。
Q: 升级MySQL能彻底解决?
A: 是,但备份数据先。