在 Linux 下使用 MariaDB 时出现 错误 1045(Access denied),通常表示:
用户无权访问数据库(用户名、密码、主机不匹配或被拒绝)
下面按最常见原因 → 对应解决办法说明。
ERROR 1045 (28000): Access denied for user 'user'@'host' (using password: YES)
或
(using password: NO)
mysql -u root -p
输错密码就会 1045。
✅ 解决:
MariaDB 中用户是:
'user'@'localhost'
'user'@'127.0.0.1'
'user'@'%'
三者不是同一个用户
例如:
mysql -u app -h 127.0.0.1
但用户只有:
'app'@'localhost'
→ 1045
✅ 解决:
CREATE USER 'app'@'%' IDENTIFIED BY 'password';
GRANT ALL ON db.* TO 'app'@'%';
FLUSH PRIVILEGES;
很多 MariaDB 默认:
'root'@'localhost' 使用 unix_socket
你用:
mysql -u root -p
→ 1045
✅ 解决方式一(推荐):
sudo mysql
✅ 解决方式二(改密码登录):
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpass';
FLUSH PRIVILEGES;
远程连接 MariaDB:
mysql -h 192.168.1.10 -u user
→ 1045
原因可能是:
✅ 检查:
# /etc/my.cnf.d/server.cnf
bind-address = 127.0.0.1
改为:
bind-address = 0.0.0.0
并确认用户:
'user'@'%'
改了用户或密码后没执行:
FLUSH PRIVILEGES;
getenforce
如果是 Enforcing,可能阻止连接。
✅ 临时测试:
setenforce 0
# 1. 本地能否进
sudo mysql
# 2. 查看用户
SELECT user, host FROM mysql.user;
# 3. 测试连接
mysql -u user -p -h host
你可以把完整报错信息和以下信息发我:
我可以直接帮你定位是哪一条原因。