Erlang通过代理用户连接Oracle数据库的方法及报错咨询
Erlang通过代理用户连接Oracle的解决方案
关于jamdb_oracle对代理用户的支持
jamdb_oracle支持通过代理用户连接Oracle数据库,但需要注意连接参数的正确配置方式,以及Oracle端的权限设置。
解决ORA-01017错误的步骤
1. 修正代码中的引号问题
你的代码中使用了中文双引号(“”),而Erlang仅识别英文双引号(""),这会导致参数解析错误,直接引发用户名/密码无效的报错。修正后的代码:
ConnOpts = [ {host, Host}, {port, Port}, {user, "proxy_user[actual_user]"}, {password, "proxy_password"}, {service_name, Service} ], jamdb_oracle:start(ConnOpts)
2. 确认Oracle端的代理权限配置
确保proxy_user已被授予代理actual_user的权限,在Oracle中执行以下SQL语句:
GRANT CONNECT THROUGH proxy_user TO actual_user;
如果未配置此权限,Oracle会直接拒绝代理连接请求,返回ORA-01017。
3. 尝试分开指定代理用户与实际用户
部分Oracle驱动要求将代理用户和实际用户分开配置,而非合并在user字段中。你可以尝试调整连接参数为:
ConnOpts = [ {host, Host}, {port, Port}, {proxy_user, "proxy_user"}, {user, "actual_user"}, {password, "proxy_password"}, {service_name, Service} ], jamdb_oracle:start(ConnOpts)
4. 验证密码正确性
代理连接使用的是proxy_user的密码,而非actual_user的密码,请确认你传入的proxy_password确实是proxy_user的有效登录密码。
内容的提问来源于stack exchange,提问作者Aleksey Samotokin
相关产品推荐
相关产品推荐

