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数据库的全部权限,权限配置显示该用户允许从任意远程地址(主机规则为%)连接。
解决方法
调整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;"验证并更新ODBC驱动
检查本地MariaDB ODBC驱动版本是否与NAS上的MariaDB版本兼容,若版本过旧,下载并安装对应版本的最新驱动,再重新测试连接。确认NAS端用户权限有效性
登录NAS上的MariaDB执行以下SQL语句,确认用户权限配置:-- 查看用户的主机规则 SELECT user, host FROM mysql.user WHERE user='balu'; -- 查看用户的具体权限 SHOW GRANTS FOR 'balu'@'%';确保输出中包含
GRANT ALL PRIVILEGES ONbalu.* TO 'balu'@'%',若修改过权限,需执行FLUSH PRIVILEGES;刷新配置。排查NAS网络与防火墙
- 确认Synology NAS的3306端口已在防火墙规则中开放,允许本地机器IP访问;
- 使用
telnet 10.0.0.4 3306测试端口连通性,若无法连接,检查NAS的网络设置与路由配置。
内容的提问来源于stack exchange,提问作者SeppUnterwurzacher
相关产品推荐
相关产品推荐

