MS Jet Engine 中的数据库级用户安全性

Posted

技术标签:

【中文标题】MS Jet Engine 中的数据库级用户安全性【英文标题】:Database level user security in MS Jet Engine 【发布时间】:2011-08-18 20:59:34 【问题描述】:

我想使用内置在 MS Jet 数据库引擎中的 DAO 系统将用户访问控制系统添加到我的一个 MS Access 应用程序中。我正在使用 Access 2007 上的 accdb 数据库。

我了解如何管理 DAO 用户和组。

我发现,要“打开”安全控制,我必须将 admin 的密码从空白更改为某个非空白值。这会强制用户在打开访问数据库时登录。然而,我发现,这会强制用户登录系统上的每个 Access 数据库。

我的问题: 有没有办法为某些 accdb 开启用户登录,而为所有其他人关闭?

【问题讨论】:

如果您使用的是 ACCDB,则不能使用 Jet 用户级安全性,它仅支持 MDB 文件。 【参考方案1】:

Access 使用工作组信息文件来存储用户和组帐户信息。默认名称是 System.mdw

您可以通过检查 SystemDb 属性找出当前工作组信息文件的名称及其所在位置。例如,在您的 Access 会话中,切换到即时窗口并运行以下行:

? SystemDB 

但是,您可以拥有另一个工作组信息文件并使用快捷方式启动 Access,该快捷方式包括 /WRKGRP 开关,后跟备用工作组信息文件的完整路径。

快捷模式包括 4 个元素。

"Path2EXE" "Path2Db" /WRKGRP "Path2MDW"

这是我的 Access 2003 系统中的一个工作快捷方式。 (应该全部在一行上;我在此处将其拆分,因此您无需滚动即可查看全部内容。)

"C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" "P:\Access\wip\sandie\NewDB.mdb" 
/WRKGRP "P:\Access\wip\sandie\Security.mdw"

所以重点是您可以拥有两个(或更多)工作组信息文件:默认没有管理员密码,用于不安全的数据库;另一个带有管理员密码,您可以将其用于安全数据库,并在打开它们时使用 /WRKGRP 开关进行引用。

这就留下了如何创建备用工作组信息文件的问题。使用用户级安全向导并选择“创建新的工作组信息文件”选项。

让我困惑的另一点是你说的 Access 2007 和 ACCDB。我的理解是 Access 2007 和 2010 仍然支持用户级安全性,但仅支持较旧的 MDB 数据库格式,不支持 ACCDB 格式。

最后一点:如果您需要防弹安全,ULS 是不够的。可以使用 Access 密码破解程序将其击败。据说它们很容易找到,但我自己从未寻找过。

【讨论】:

复制默认工作组文件将导致数据库不安全,因为默认管理员用户在所有默认工作组中都是相同的。您必须创建一个自定义工作组以获取唯一的管理员用户作为保护数据库的起点。 @David_W_Fenton 谢谢。我确定了答案。

以上是关于MS Jet Engine 中的数据库级用户安全性的主要内容,如果未能解决你的问题,请参考以下文章

经典 asp - ms 访问更新问题(Microsoft Jet 数据库引擎停止)

Microsoft JET Database Engine 错误 '80040e14'

MS Access Jet 数据库以编程方式紧凑

安装iis打开网站提示Microsoft JET Database Engine 错误 '80004005'解决办法

Jet Engine 的查询优化是基于统计的,但是它们是如何用链接表刷新的呢?

JET OLEDB 参数如何将字符串与 Access DB 中的文本字段进行比较