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

Excel VBA连接群晖NAS上MariaDB遇权限拒绝问题求助

Excel VBA连接Synology NAS上的MariaDB遇权限拒绝错误

问题详情

使用Excel VBA(Office 365、Windows 11环境)连接MariaDB,本地部署时连接正常,迁移至Synology NAS后报错:

Access denied for user 'balu'@localhost' (using password: YES)

错误触发在conn.Open执行阶段。

VBA连接代码

Set conn = New ADODB.Connection
conn.ConnectionString = "DRIVER={MariaDB ODBC 3.1 Driver};SERVER=10.0.0.4;PORT=3306;DATABASE=balu;USER=balu;PASSWORD=*****;"

'SQL String
strSQLBefehl = "SHOW TABLES FROM " & Datenbank & ";"

Set rs = New ADODB.Recordset
rs.CursorLocation = adUseServer

conn.Open
rs.Open strSQLBefehl, conn

对比验证

本地Python脚本可正常连接目标数据库,代码如下:

engine = sqlalchemy.create_engine("mariadb+mariadbconnector://balu:****@10.0.0.4:3306/balu")

权限说明

用户balu已拥有balu数据库的全部权限,权限配置显示该用户允许从任意远程地址(主机规则为%)连接。

解决方法

  1. 调整ODBC连接参数
    在连接字符串中添加OPTION=3,强制使用TCP/IP连接(避免ODBC驱动将远程IP解析为localhost),修改后连接字符串:

    conn.ConnectionString = "DRIVER={MariaDB ODBC 3.1 Driver};SERVER=10.0.0.4;PORT=3306;DATABASE=balu;USER=balu;PASSWORD=*****;OPTION=3;"
    
  2. 验证并更新ODBC驱动
    检查本地MariaDB ODBC驱动版本是否与NAS上的MariaDB版本兼容,若版本过旧,下载并安装对应版本的最新驱动,再重新测试连接。

  3. 确认NAS端用户权限有效性
    登录NAS上的MariaDB执行以下SQL语句,确认用户权限配置:

    -- 查看用户的主机规则
    SELECT user, host FROM mysql.user WHERE user='balu';
    -- 查看用户的具体权限
    SHOW GRANTS FOR 'balu'@'%';
    

    确保输出中包含GRANT ALL PRIVILEGES ON balu.* TO 'balu'@'%',若修改过权限,需执行FLUSH PRIVILEGES;刷新配置。

  4. 排查NAS网络与防火墙

    • 确认Synology NAS的3306端口已在防火墙规则中开放,允许本地机器IP访问;
    • 使用telnet 10.0.0.4 3306测试端口连通性,若无法连接,检查NAS的网络设置与路由配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:57:31