You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

远程Ubuntu 20服务器无法进入MySQL控制台问题求助(需替换MySQL凭据)

远程Ubuntu 20服务器无法进入MySQL控制台问题求助(需替换MySQL凭据)

你确实是用系统root账户登录了远程服务器,但MySQL的root账户和系统的root账户是完全独立的身份,这就是你碰到错误的核心原因!

为什么会报错?

你直接执行mysql命令时,MySQL会默认用当前系统用户名(也就是root)尝试无密码登录,但MySQL的root账户默认在Ubuntu 20.04上要么是通过auth_socket插件认证(需要特定的本地连接方式),要么已经被设置了登录密码,所以无密码登录会被拒绝,就出现了ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)这个错误。

解决方案(分两种情况尝试)

情况1:尝试直接通过系统root身份登录MySQL

因为Ubuntu安装MySQL-server后,默认可能配置了系统root用户可以免密通过socket登录MySQL,你可以试试明确指定用户名登录:

mysql -u root

如果还是不行,试试用sudo执行(即使你已经是系统root,这个操作有时候能绕过认证限制):

sudo mysql

如果成功进入MySQL控制台,接下来你就可以修改root账户的密码或者调整认证方式:

  1. 切换到mysql系统数据库:
USE mysql;
  1. 设置新的密码(MySQL 8.0+用这个语法):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
  1. 刷新权限使修改生效:
FLUSH PRIVILEGES;
  1. 退出控制台:
EXIT;

之后你就可以用mysql -u root -p命令,输入刚才设置的密码登录了。

情况2:如果上述方法都无法登录,需要重置MySQL root密码

如果连sudo都进不去,那就需要跳过MySQL的权限检查来重置密码:

  1. 先停止MySQL服务:
systemctl stop mysql
  1. 用跳过权限检查的方式启动MySQL后台进程:
mysqld_safe --skip-grant-tables &
  1. 此时可以直接无密码登录MySQL:
mysql -u root
  1. 切换到mysql系统数据库:
USE mysql;
  1. 修改root账户的密码和认证方式:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的新密码';
  1. 刷新权限:
FLUSH PRIVILEGES;
  1. 退出MySQL控制台:
EXIT;
  1. 停止刚才启动的mysqld_safe进程:
pkill mysqld
  1. 重启正常的MySQL服务:
systemctl start mysql

现在你就可以用mysql -u root -p输入新密码登录MySQL了。

补充说明

从你提供的dpkg -s mysql-server输出可以确认,你确实安装了MySQL-server 8.0.34,这个版本的认证机制和旧版本有所不同,所以一定要用ALTER USER语法来修改密码,不要用旧的SET PASSWORD方式哦。

备注:内容来源于stack exchange,提问作者mstdmstd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:05:31