我怎么能让一个MsAccess前端和Mysql后端更多的用户意识?

我有一个使用mysql后端的分布式MsAccess前端数据库。

它使用Windows系统DSN ODBC连接来连接到服务器。 我所有的链接表都是指那个ODBC连接。 事情是,他们都使用相同的用户名和密码,这是硬编码到每台计算机。

什么是更好的方式来实现它,使每个用户得到它的login

由于每个DSN连接都是“硬连线”的,我不认为每次应用程序启动时重写registry都是一种安全的方式,因为应用程序崩溃时DSN设置将保持不变。

我不知道如果我可以离开系统DSN没有用户名和密码提示,但是我们连接到四个不同的数据库,所以我不希望用户input他们的信息四次,因为这只会挫败用户。

我想也许我可以使用系统DSN用户作为一个只读的用户表,或者最好是一个程序,将validation用户,除了一旦validation,我不确定我将如何连接每个表。 我可以在ODBC连接string中存储全局variables吗?

什么是更好的方式使MsAccess更多的用户意识?

(我查看了MSACCESS安全设置,但似乎微软正在减less这一点,我的尝试build立它完全locking我并没有任何forms的loginvalidation,我想它只是使用widowslogin作为安全性,但这不是一个真正的解决scheme)这里有一个免责声明:

Access 2010安全性简介(office.microsoft.com)

访问和用户级安全

Access不支持以新文件格式(.accdb和.accde文件)创build的数据库的用户级安全性。 但是,如果您从Access 2010的早期版本的Access中打开数据库,并且该数据库已应用了用户级别的安全性,则这些设置仍然可以正常工作。

重要事项使用用户级别安全function创build的权限不会保护您的数据库免受恶意用户的攻击,也不会成为安全障碍。 使用此function可以提高可信用户数据库的可用性。 为帮助保护数据安全,请仅允许受信任的用户使用Windows文件系统权限访问数据库文件或关联的用户级安全文件。

如果将具有用户级别安全性的Access早期版本的数据库转换为新的文件格式,则Access会自动去除所有安全设置,并且适用保护.accdb或.accde文件的规则。

最后,请记住,当您打开具有新文件格式的数据库时,所有用户都可以随时查看所有数据库对象。

据我了解,您希望为应用程序内的最终用户(“应用程序用户”)提供更个性化的体验/环境,同时通过将用户身份validation过程与OBDC DSN连接凭证(“数据库用户”)。

这个定制的用户环境通常是通过让你的最终用户使用你的应用程序来validation自己。 这通常通过让用户在加载应用程序时input用户名和密码(通常存储在my_app_db.users表中)来完成。

在应用程序用户身份validation发生之前,应用程序本身(或计算机)需要与数据库服务器build立连接。 这个“数据库用户”通常通过以下方式实现:

  1. 一个静态的,预定义的数据库用户/密码,被硬编码到应用程序(和/或安装程序脚本/二进制文件)中。 然后,安装脚本通常会询问服务器pipe理员,以获取数据库凭证(其中包括) CREATEGRANT权限(通常是root用户),以便安装程序可以创build所需的数据库用户。
  2. 用适当权限预先创build的用户定义的数据库用户; 安装程序会要求您提供这些凭证,应用程序将使用自己的可逆encryption方法(或模糊处理)来存储这些凭据,以便将这些凭据保留在客户端的某个位置(.dat文件,registry项等)中在数据库连接build立之前可以读取的一种方法。

至于安全性,最低优先权规则在这里是很重要的:这个数据库用户只能被授予最less量的权限,以使应用程序正确运行(即SELECT,INSERT,UPDATE和DELETE,只有应用程序的数据库,从来不是系统/主数据库)。

这与不在最终用户机器上以纯文本forms存储数据库证书相结合的方式可以保护您的应用程序免受未经授权的访问。 请记住,如果恶意用户获得本地pipe理员对安装应用程序的机器的访问权限,则可能会导致游戏结束:他们可能会将该连接string解密,或者甚至嗅探networking接口上的MySQLstream量以获取数据库用户的凭据,在这一点上,取决于你是如何限制你的用户的(好吧,希望MySQL定期打补丁)以及攻击者有多复杂和确定。

请记住,许多数据库应用程序将使用应用程序服务器,本质上是代表客户端代理与数据库的连接的中间“守卫”。 这通常是出于性能/可伸缩性原因而完成的,但是还有一个安全优点,即数据库服务器可以被隔离/限制到只有应用服务器,并且最终用户客户端不能直接访问它。

至于ODBC DSN选项和MySQL,我不太了解可用的东西。 但是,在更高版本的MySQL中似乎确实存在Windows本机authentication支持 。

我已经成功地使用带有安全证书的MySQL / NET连接器与MySQL和ASP.NET应用程序结合使用,但是我不知道是否扩展到Microsoft Access; 你可能不得不在那里写一些.NET胶水。

而当/如果下降到具体情况,你可能会更好地问在堆栈溢出在这一点上。

希望这可以帮助。