经过一个多月的精心分析和研究终于完成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