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

本地连接MariaDB遇Access Denied错误,远程正常求排查方案

解决MariaDB本地连接tuser@%报1045错误的问题

问题分析

你创建的tuser@%用户仅匹配TCP/IP远程连接,但本地连接时存在以下场景冲突:

  • 直接执行mysql -u tuser -p会通过Unix Socket(Linux)/命名管道(Windows)连接,MariaDB会优先匹配localhost主机的用户条目
  • 指定-h localhost/127.0.0.1/服务器名/本地IP时,若没有对应主机的用户条目或权限不足,就会触发1045错误

修复步骤

1. 登录MariaDB root账户

本地直接通过Socket登录(无需-h参数):

mysql -u root -p

2. 检查现有tuser的主机条目

执行SQL查看当前tuser的所有主机记录:

SELECT user, host, plugin FROM mysql.user WHERE user = 'tuser';

如果返回结果只有tuser@%,说明缺少本地连接对应的主机条目。

3. 创建本地连接对应的用户条目

为常用本地连接场景创建用户(密码保持与远程用户一致):

-- 匹配Socket连接的localhost用户
CREATE USER IF NOT EXISTS 'tuser'@'localhost' IDENTIFIED BY '123';
-- 匹配回环IP TCP连接的用户
CREATE USER IF NOT EXISTS 'tuser'@'127.0.0.1' IDENTIFIED BY '123';
-- 匹配服务器名和本地IP的用户
CREATE USER IF NOT EXISTS 'tuser'@'server_maria' IDENTIFIED BY '123';
CREATE USER IF NOT EXISTS 'tuser'@'192.168.1.50' IDENTIFIED BY '123';

4. 授予权限并刷新

给这些本地用户授予与远程用户相同的权限(根据实际需求调整,示例为全权限):

GRANT ALL PRIVILEGES ON *.* TO 'tuser'@'localhost';
GRANT ALL PRIVILEGES ON *.* TO 'tuser'@'127.0.0.1';
GRANT ALL PRIVILEGES ON *.* TO 'tuser'@'server_maria';
GRANT ALL PRIVILEGES ON *.* TO 'tuser'@'192.168.1.50';
-- 刷新权限使设置立即生效
FLUSH PRIVILEGES;

验证连接

现在尝试各种本地连接方式:

# Socket连接
mysql -u tuser -p
# TCP连接到localhost
mysql -u tuser -p -h localhost
# TCP连接到127.0.0.1
mysql -u tuser -p -h 127.0.0.1
# TCP连接到服务器名/本地IP
mysql -u tuser -p -h server_maria
mysql -u tuser -p -h 192.168.1.50

内容的提问来源于stack exchange,提问作者GholamReza Maleki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 03:15:17