Ubuntu 上 MySQL 登录失败是很常见的问题,原因非常多。下面按最常见 → 较少见的顺序帮你排查,你对照看一下是哪一类。
很多人刚装完 MySQL,以为有密码,其实默认可能不是密码登录。
检查方式:
sudo mysql -u root
如果能进,说明是 auth_socket 认证(见第 2 点)。
auth_socket(不是密码)Ubuntu 官方 MySQL 默认:
root 用户只能通过 sudo 登录
不是密码错误,而是不允许密码登录。
查看:
SELECT user, host, plugin FROM mysql.user;
如果看到:
root | localhost | auth_socket
✅ 解决方式(改成密码登录):
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;
systemctl status mysql
如果没运行:
sudo systemctl start mysql
本地登录要用:
mysql -u root -p
而不是:
mysql -h 127.0.0.1 -u root
(除非你改过配置)
Access denied for user 'root'@'localhost'✅ 密码错 / auth_socket / 用户不存在
Can't connect to local MySQL server✅ MySQL 没启动
✅ socket 文件不存在(/var/run/mysqld/mysqld.sock)
Unknown database 'mysql'✅ 数据目录损坏或初始化失败
Too many connections✅ 连接数爆了(通常不是登录本身问题)
# 1. 看服务
systemctl status mysql
# 2. 用 sudo 试试
sudo mysql -u root
# 3. 看认证方式
sudo mysql -e "SELECT user,host,plugin FROM mysql.user;"
你可以把完整报错信息贴出来,比如:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
或者告诉我:
mysql --version)我可以直接告诉你哪一步错了、怎么改。