经过一个多月的精心分析和研究终于完成sql server的验证过程,把验证过程分开实现在sql server的中间件oneproxy-for-sqlserver中了。目前oneproxy-for-sqlserver已经实现前后端密码分离功能。可以通过平民软件了解更多情况或者跟踪本项目的wiki了解情况。
至从oneproxy-for-sqlserver的1.1.0版本开始支持密码分离的功能,oneproxy-for-sqlserver是在开源框架oneproxy-monotor下开发的。前端使用与登录数据库不同的用户名和密码来登录中间件oneproxy-for-sqlserver,oneproxy-for-sqlserver在使用另外一个用户名和密码来登录数据库。下面来讲解配置与使用情况:
[oneproxy] logfile = oneproxy_log.log pidfile = oneproxy_pid.pid listen_addr = 0.0.0.0 listen_port = 9999,8888,7777,6666 httpserver_addr = 0.0.0.0 httpserver_port = 8080 log_level = error data_dump = false log_sql = false clientusername = admin clientpassword = 123456 passwordseparate = true [database_1433] host = 127.0.0.1 port = 1433 username = sa password = 0000 [sqlserver_9999] dbmastergroup = database_1433 classname = SSProtocol frontport = 0
上面是配置文件中的内容,与密码分离相关的配置在[oneproxy]和[database_xxx]标签下面都有,下面是[oneproxy]标签下的配置,这个配置的是客户端使用的用户名和密码情况。passwordseparate指示中间件使用这个功能还是不使用这个功能。默认情况(没有此配置项)下是为true。如果需要关闭密码分离功能,则设置此配置为false即可。
clientusername = admin clientpassword = 123456 passwordseparate = true
同时需要注意的是数据库的信息必须放到[database_xxx]标签下,标签的名称必须是database开头即可。登录数据库的用户名和密码则必须放到数据库标签下面,通过username和password来指定。
测试环境:
服务器版本:
Microsoft SQL Server 2014 - 12.0.2000.8 (X64) Feb 20 2014 20:04:26 Copyright (c) Microsoft Corporation Express Edition (64-bit) on Windows NT 6.3 <X64> (Build 14393: ) (Hypervisor)
客户端程序与版本:
1. sqlserverjdbc4
2. Microsoft SQL Server Manager studio
3. sqlstress