在 CentOS 上 MySQL(或 MariaDB)无法登录,常见原因和对应解决办法如下,你可以按顺序排查:
systemctl status mysqld
# 或 MariaDB
systemctl status mariadb
如果没启动:
systemctl start mysqld
systemctl enable mysqld
Access denied for user 'root'@'localhost'解决:重置 root 密码
systemctl stop mysqld
mysqld_safe --skip-grant-tables &
mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
如果是 MariaDB:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('新密码');
exit
systemctl restart mysqld
Can't connect to local MySQL server through socket检查:
ps aux | grep mysqld
ls -l /var/lib/mysql/mysql.sock
如果服务没启动:
systemctl start mysqld
mysql -u root -p 一直失败可能是 auth_socket / unix_socket 插件问题(常见于 Ubuntu,但 CentOS 也有可能)
查看:
SELECT user, host, plugin FROM mysql.user;
如果是 auth_socket:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
如果是远程连接失败:
netstat -tunlp | grep 3306
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload
CREATE USER 'user'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%';
FLUSH PRIVILEGES;
cat /var/log/mysqld.log
或
journalctl -xe
✅ 服务是否启动
✅ 用户名 / 密码是否正确
✅ 是否用了 socket 还是 TCP
✅ 是否被防火墙拦截
✅ 错误日志说什么
如果你能贴出 具体的报错信息(比如完整错误提示),我可以更精准地帮你解决。