Debian 上 MySQL(或 MariaDB)无法登录 常见原因很多,一般不是单一问题。下面按最常见 → 较少见的顺序帮你排查,并给出对应解决办法。
root 登录失败(最常见)Debian 默认 MariaDB 使用 unix_socket 插件,而不是密码登录。
mysql -u root -p
Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
root 只能通过 系统 root 用户 登录,不能用密码。
✅ 方法 1:用 sudo 登录(推荐)
sudo mysql
✅ 方法 2:改为密码登录
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('新密码');
FLUSH PRIVILEGES;
然后就可以:
mysql -u root -p
systemctl status mariadb
# 或
systemctl status mysql
sudo systemctl start mariadb
sudo systemctl enable mariadb
ss -lntp | grep 3306
如果没有输出,检查配置:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
确认:
bind-address = 127.0.0.1
# 或
bind-address = 0.0.0.0
然后重启:
sudo systemctl restart mariadb
SELECT user, host FROM mysql.user;
如果你是这样登录的:
mysql -u root -h 127.0.0.1
但用户只有:
root | localhost
就会失败。
✅ 解决:
CREATE USER 'root'@'127.0.0.1' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;
sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables &
mysql
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
sudo systemctl restart mariadb
sudo journalctl -u mariadb
# 或
sudo tail -n 50 /var/log/mysql/error.log
常见错误:
Can't read dir of /var/lib/mysqlPermission denied✅ 解决:
sudo chown -R mysql:mysql /var/lib/mysql
sudo systemctl restart mariadb
Debian 默认是 MariaDB,不是 Oracle MySQL。
确认:
mysql --version
如果是:
mysql Ver 15.xx Distrib 10.xx-MariaDB
✔ 正常,不用重装。
你可以按顺序执行:
sudo systemctl status mariadb
sudo mysql
mysql -u root -p
SELECT user, host FROM mysql.user;
如果你愿意,可以直接把 具体报错信息 或 登录命令 + 返回错误 发出来,我可以精确告诉你哪一步错了。