解决Oracle SQL Developer连接需MFA的Azure Database登录失败问题
解决Oracle SQL Developer连接Azure SQL Database的登录失败问题
核心原因
Oracle SQL Developer默认不支持Azure Active Directory(AAD)的Universal with MFA认证方式,而SSMS是原生适配该认证逻辑的,这是两者连接结果不同的关键。以下是具体解决步骤:
解决方案
1. 先验证基础连接(排除非MFA因素)
先创建一个无MFA的AAD标准账号,给目标数据库分配登录权限,用这个账号测试SQL Developer连接:
- 主机地址填
myserver.net,SSL模式设为require(Azure SQL强制要求加密连接,request不足以满足要求) - 用户名直接填AAD账号名(比如
myusername,不要加@myserver.net后缀,该格式仅适用于SQL本地账号) - 若此连接成功,说明网络、防火墙、驱动基础配置无问题,问题集中在MFA认证适配。
2. 配置SQL Developer支持AAD MFA认证
需通过Azure AD令牌认证来绕过直接MFA登录限制:
- 安装并登录Azure CLI,执行命令获取访问令牌:
复制返回结果中的az account get-access-token --resource https://database.windows.net/accessToken值。 - 在SQL Developer中新建连接:
- 连接类型选择
SQL Server(确保已安装最新版Microsoft JDBC Driver for SQL Server) - 主机名
myserver.net,端口1433,填写目标数据库名称 - 认证方式选
OAuth 2.0,令牌类型指定Azure AD,粘贴刚才获取的令牌到OAuth Token字段 - 勾选
SSL,SSL模式设为require,测试连接。
- 连接类型选择
3. 检查并更新JDBC驱动
旧版Microsoft JDBC Driver for SQL Server不支持AAD OAuth认证,需确保使用最新版本:
- 打开SQL Developer,路径为
工具 -> 首选项 -> 数据库 -> JDBC驱动,找到SQL Server驱动条目,更新到最新版本。
4. 长期使用的替代方案
如果需要频繁连接,每次手动获取令牌效率低,可以配置Azure AD服务主体(无交互式认证):
- 在Azure AD中注册服务主体,分配目标数据库的访问权限
- 在SQL Developer中用服务主体的客户端ID、客户端密钥、租户ID配置OAuth认证,实现无MFA的自动化连接。
内容的提问来源于stack exchange,提问作者Happiness
相关产品推荐
相关产品推荐

