找回密码
 加入
搜索
查看: 11096|回复: 31

如何连接局域网中带用户名和密码的数据库(.mdb)?最后解决方法采用SQL做数据库

[复制链接]
发表于 2008-5-4 22:49:08 | 显示全部楼层 |阅读模式
       最近小弟在做一个公司内部多人“交互使用”的软件。有关于一个数据库安全的问题想请问一下各位达人。
现况:我的数据库是放在局域网内的一部电脑的共享文件夹内,权限要打开完全控制。.mdb的数据库才能正常连接、编辑、读取、删除数据。


问题:就是这里,数据库文件(.mdb)在同一局域网的任何一台电脑都可以删除这个文件。一点安全性都没有。删了变得软件又没有数据库了。

我有个想法,但还没有实现功能的很好方法。你来帮一下我吧。
1、放置数据库的电脑在局域网中设置访问时需要输入用户名和密码。

代码如何实现?困惑我多时了。不胜感谢!

部分连接代码,参考:

补图参考:

图解:数据库放在局域网的这台电脑上的一个共享文件夹内,我要使用什么语句才能正确连接(.mdb)文件作其它操作。例如:读取、编辑、删除数据表内容?

               $datadir = @ScriptDir & "\data_zzc.mdb" ;现在是连接本地的数据库没有问题。
                $conn = ObjCreate("ADODB.Connection")
                $RS = ObjCreate("ADODB.Recordset")
                $conn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & $datadir & ";Jet Oledb:Database Password=密码")
                $RS.ActiveConnection = $conn
                $RS.open ("select * from 表名" )
                $data = '"' & GUICtrlRead($CaiGou_Combo[1]) & '"'
                For $j = 2 To $RS.Fields.Count - 2 Step 1
                        $data = $data & "," & '"' & GUICtrlRead($CaiGou_Combo[$j]) & '"'
                Next
                $List = $RS.Fields.Item (0).Name
                For $i = 1 To $RS.Fields.Count - 3
                        $List = $List & "," & $RS.Fields.Item ($i).Name
                Next
                $add = 'insert into ' & $hardware & ' (' & $List & ') values (' & $data & ')'
                $conn.Execute($add)
                $conn.close

[ 本帖最后由 华杰 于 2008-5-11 14:05 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2008-5-5 11:34:09 | 显示全部楼层
这里 $datadir = @ScriptDir & "\data_zzc.mdb"  设置成局域网共享机器不行?
有没有试试先连接这台电脑.获得需要的权限.

感兴趣,希望楼主搞定.
发表于 2008-5-5 13:25:43 | 显示全部楼层
回到 SQL 語句的問題上才是解決的根本方式
使用
  $RS.open ("select * from 表名" )
這樣的做法,利用封包抓取軟件可以輕易的獲取表名還有值

建議可以先判斷使用者名稱密碼後
返回ID值再去取欄位名稱和值
 楼主| 发表于 2008-5-5 14:28:42 | 显示全部楼层
原帖由 gooker 于 2008-5-5 11:34 发表
这里 $datadir = @ScriptDir & "\data_zzc.mdb"  设置成局域网共享机器不行?
有没有试试先连接这台电脑.获得需要的权限.

感兴趣,希望楼主搞定.


首先感谢你的支持。回应一下:设置成局域网共享机器访问,数据库是可以成功访问和做读写操作。但这不是我想要的

我要设置一个有用户名和密码才能访问的方式。(注:不是数据库本身设置的密码)
是局域网访问的用户名和密码。

再回3楼:我的数据不是很保密的,不用绝对很安全。但我最主要的目的是防止别人删掉我整个数据库。SQL语句我不会。再请指教,给个例子最好,

谢谢你们。
发表于 2008-5-5 18:11:47 | 显示全部楼层
你给共享文件夹设个权限,能修改库,不能删除库
属性--安全--高级,不选中“允许……传播给该对象”,点击“查看--编辑”,
去掉“删除子文件夹及文件”
我没测试过数据库。但是用文件测试过,可以修改,但不能删除


这样的程序应该用SQL ,多方便
 楼主| 发表于 2008-5-5 19:08:23 | 显示全部楼层
原帖由 rho123 于 2008-5-5 18:11 发表
你给共享文件夹设个权限,能修改库,不能删除库
属性--安全--高级,不选中“允许……传播给该对象”,点击“查看--编辑”,
去掉“删除子文件夹及文件”
我没测试过数据库。但是用文件测试过,可以修改,但不能删 ...



我的硬盘的格式不是NTFS的,是FAT32,你所说的我这里没有这一项,但我会去尝试,谢谢。

请问rho123你能不能提供一下有关AU3操作SQL的语句的例子,非常感谢。希望你们能成就我。
发表于 2008-5-5 20:24:32 | 显示全部楼层
像这种程序装个SQL数据库又安全又方便
 楼主| 发表于 2008-5-5 21:15:18 | 显示全部楼层

都叫我用SQL,可惜我不会啊。大家有没有例子,或者SQL自定义函数?大家提供一下,谢谢
发表于 2008-5-5 21:21:00 | 显示全部楼层
提個疑問

既然用戶權限擁有刪除的屬性
那麼就一定能刪除

提個小意見參考是否可行

1. 使用程式刪除時,刪除的按鈕當驗證過後則可以顯示,也就是才能按下去的意思
2. MD 裡面加個資料表, 有 USER / PASSWORD / 權限 等設置,例如讀取到權限 1  = 能讀,  2= 能讀能寫 3=能讀能寫能刪除
3.一開始先讀取這權限再去調適GUI的設置分別去顯現 讀取  寫入   刪除等按鈕


不過話回到頭,有了基礎權限,網路上大把的封包檢測軟體, 一般同事不懂的只是不懂你欄位放哪裡或是檔名叫什麼
要是懂得,直接透過網芳就能作怪啦
 楼主| 发表于 2008-5-5 21:31:43 | 显示全部楼层
原帖由 abiteric 于 2008-5-5 21:21 发表
提個疑問

既然用戶權限擁有刪除的屬性
那麼就一定能刪除

提個小意見參考是否可行

1. 使用程式刪除時,刪除的按鈕當驗證過後則可以顯示,也就是才能按下去的意思
2. MD 裡面加個資料表, 有 USER / PASSWORD  ...


这些小意见都是一个很好的方法,但我觉得用在我这个问题还不能完全解决。
我要的是在局域网共享文档中不能删除或者使用WINXP自带的用户名和密码才能删除/。又要不影响读、写数据表。
多谢你的意见!
发表于 2008-5-6 01:54:57 | 显示全部楼层
设置共享权限不就可以了;
在共享的主机上新建一个用户并设置密码,共享有数据库的文件夹时,点击“权限”,再点“添加”,输入刚才新建的用户,再给予“完全控制”权限。

客户机用DriveMapAdd("", "\\myserver2\mdb", 0, "user", "pass")来与主机连接!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2008-5-6 09:45:17 | 显示全部楼层
原帖由 Amu 于 2008-5-6 01:54 发表
设置共享权限不就可以了;
在共享的主机上新建一个用户并设置密码,共享有数据库的文件夹时,点击“权限”,再点“添加”,输入刚才新建的用户,再给予“完全控制”权限。

客户机用DriveMapAdd("", "\\myserver2 ...


你这样别人可以直接删除数据库 你这是磁盘映射,可以直接MDB 删除吧
发表于 2008-5-6 09:54:19 | 显示全部楼层
我还没学到哪。。等学到了再帮帮你
先标记个,以后好学习
 楼主| 发表于 2008-5-6 11:56:34 | 显示全部楼层
原帖由 xyz161314 于 2008-5-6 00:26 发表
这是一小段SQL连接代码 希望对你有帮助
$pro= ObjCreate("ADODB.Connection")
$RS = ObjCreate("ADODB.Recordset")
$pro.Open ("driver={SQL Server};server=192.168.0.251;uid=test;pwd=test;database=test")
$ ...


这个代码让我看到SQL的方便性,我决定使用SQL Server类代码。希望你胶有更多这方面的代码提供一下给予我们参考/。非常感谢。
发表于 2008-5-6 12:26:18 | 显示全部楼层
SQL 和ACC 语法都一样啊。只是打开库不一样
如果会写ASP ,那这个就不在话下

=====================================
func sql()
   if Ping($Sqlip,1000) <> 0 then
    $conn = ObjCreate("ADODB.Connection")
    $RS = ObjCreate("ADODB.Recordset")
    $conn.Open ("Provider=SQLOLEDB.1;Connect Timeout=10;Data Source="& $Sqlip &";Password=" & $Sqlpass & ";Persist Security Info=False;User ID=" &$Sqlid & ";Initial Catalog=kfgl")
    $RS.ActiveConnection = $conn
    $RS.open ("select * from fjsz where fjbh="&$fjbh)
    While (Not $RS.eof And Not $RS.bof)
         GUICtrlSetData($lx, $RS.Fields (3).value)
                 $fjzt = $RS.Fields (5).value
                 ExitLoop
        WEnd
    $RS.close
        $fjzt = StringStripWS ($fjzt,8)
        if $fjzt = "使用"  then
        Return 0
    Else
        Return 1
        EndIf
Else
        Return 1
EndIf
EndFunc

[ 本帖最后由 rho123 于 2008-5-6 12:27 编辑 ]
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-18 01:45 , Processed in 0.084193 second(s), 21 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表