escaping - 带反斜杠的用户名
问题描述
我已经通过 gradle 插件尝试了 liquibase,并尝试了 liquibase 独立在数据库上运行更新,用户名中有反斜杠。
我总是收到“登录失败”错误。如果我尝试与另一个没有反斜杠的用户连接到同一个数据库,它可以工作,但我真的需要使用带有反斜杠的用户进行连接。
您可以在此处查看更多详细信息:https ://github.com/liquibase/liquibase-gradle-plugin/issues/62
关于如何尝试逃避反斜杠的任何想法?我尝试使用引号和双反斜杠,甚至绝望地尝试了多个反斜杠,但无济于事。
解决方案
问题与 Liquibase 无关,而是尝试使用域凭据登录 MSSql 数据库。
对于受此问题影响的任何未来用户,我更改了连接字符串:
liquibase {
activities {
main {
changeLogFile "$config.db.changeLogFile"
url 'jdbc:jtds:sqlserver://servername:1433;databaseName=dbName;domain=org;useNTLMv2=true;'
username "username"
password 'password'
}
}
}
所以域不再在用户名中声明,而是在url中。此外,对 jdbc:jtds:sqlserver 的更改意味着 Liquibase 正在使用 jtds 驱动程序连接数据库,这似乎得到了很好的支持。
我还尝试使用 Kerberos 集成安全身份验证,但最后我使用了 NTLM 身份验证,如上所述。无论如何,如果您对此感兴趣,请去看看。
我还留下了一些对我有帮助的有趣文章: https ://kontext.tech/docs/DotNetEssential/p/jdbc-integrated-security-ntlm-and-kerberos-authentication-for-sql-server https://blogs.msdn .microsoft.com/psssql/2015/01/09/jdbc-this-driver-is-not-configured-for-integrated-authentication/
推荐阅读
- kotlin - 从具有 runtimeOnly 依赖项的模块注册 Koin 组件
- django - 'choices' 必须是包含(实际值,人类可读名称)元组的可迭代 django 3.1
- javascript - 通过不同的按钮单击在数组上添加和删除元素
- swift - 表格单元格未在 Swift 上适当调整高度
- android - 无法从协程 withContext(Dispatchers.Main.imidiate){} 更新类变量的值
- assembly - 使用 makefile 在 Raspberry Pi 4 上组装
- ios - 独立的 watchOs app 需要分发吗?
- audio - AVCodecContext->frame_size 和 AVFrame->nb_samples 之间的音频样本大小差异
- javascript - 更改屏幕宽度时更改变量(例如横向到纵向)
- java - JavaFx 中的 jxBrowser - 线程“JavaFX 应用程序线程”java.lang.IllegalStateException 中的异常:无法获取本机窗口句柄