首先我的工作说一下!
   我是一个DBA,程序和数据库的论证方式是WINDOWS论证,密码为空。这样做的最大问题就是任何一个人在终端装一个数据库都可以访问服务器,数据库非常不安全。我认为用WINDOWS论证方式的话,你能够访问到程序,就能够访问到数据库。要让用户不能够访问数据库,只能够用SQLSERVER自带的论证方式,密码在程序里控制,动态配制,我想问一下如何能够做到这一点,最好给一段代码给我,小弟不胜感激。
   另外,我想问一下,你们是怎么处理类似问题。

解决方案 »

  1.   

    将Sql server里的winnt验证的用户Administrator删除,给sa加密码,将验证方式改为sql验证,以后添加的用户都用sql验证,不能用混合验证,这样就行了。
      

  2.   

    感谢Commander007的回复 
       如果按照你的说法,全系统200多个模块中的DATABASE中的论证方式都要重新改变,这样的话很麻烦。另外,即使你一旦给SA加上了密码的话,一旦要修改密码,还是一样要改程序。有没有更好的方法呢??
       !!!!!!!!!!!!!!!111
      

  3.   

    1.你们有200多个模块?好大,其实不需要改database的验证方式,只需要在sql的企业管理器里,把你已有的用户的验证方式改为sql验证(如果不是一个模块一个用户的话)方式 就行了。2.你可以在程序中做一个连接管理器(把用户名和密码加密保存起来),这样一旦更改密码,把程序里重新设置一下就行了,不需要改程序。
      

  4.   

    我还是不明白你的意思,怎么在SQL中修改,我们的程序都是固定用DATABASE连接数据库,然后在用QUERY连接DATABASE,不修改程序可以吗?另外,最开始写程序的时候统一是在WINDOW2000SERVER下调试,用ADMINISTRATOR论证,我想到WINDOWS98下调试,怎么试都不可以,因为WIN98没有ADMINISTRATOR着一说法,这个问题能解决吗?
    另外怎么做一个连接管理器呢?
    在一次感谢Commander007的回复 
      

  5.   

    我说的修改并不是指在delphi的sql中修改,而是需要你跑到你的安装有sql server的服务器上,打开sql server的企业管理器,在那里面修改,只要把混合认证方式改成sql认证就行了,再把sa加上密码,剩下的就需要在你的程序稍作修改
    把你的程序加一个form,做成用户登录数据库的form,里面放两个edit,一个做为用户名,另一个做为密码框,然后将这两个的值取出来,传递给你的数据库连接字符串就行了。
      

  6.   

    还是有一点不明白
       我感觉程序不是稍作修改,而是所有的模块都要修改!!!!
       另外,加一个form里面放两个edit,是不是在说有模块里都要加!!!既然用户知道了密码,那么还不是一样可以在客户段装SQLSERVER2000,用同样的用户名和密码进去???
      

  7.   

    windows 验证不是你这样用的,WINDOWS验证是要和DOMAIN结合的,同时在SQL中赋予不同的用户不同的角色组。WINDOWS验证的安全性其实是要高与SQL验证的,但是不灵活所以用的并不多罢了!
      

  8.   

    请问一下什么是domain呢?windows 验证是怎么样用的呢?
    你在实际开发过程中是怎样解决这个问题的呢?
    谢谢!!!!!1
      

  9.   

    我认为用WINDOWS论证方式的话,你能够访问到程序,就能够访问到数据库。要让用户不能够访问数据库,只能够用SQLSERVER自带的论证方式,密码在程序里控制,动态配制,我想问一下如何能够做到这一点,最好给一段代码给我,小弟不胜感激。
    ==============================================================================
    我觉得(只能够用SQLSERVER自带的论证方式,密码在程序里控制,动态配制)好象不能实现,程序访问数据库时是按你配置的驱动的登陆名来访问的,要想程序动态的配置,那程序也必须以sa的身份登陆,要不然就谈不上动态了,小弟浅见,各位觉得呢?