【问题标题】:Hard code credentials in MS Access connection string (password protected)MS Access 连接字符串中的硬代码凭据(受密码保护)
【发布时间】:2017-10-25 07:00:18
【问题描述】:

我想硬编码连接到 Access 数据库的凭据。

我的连接字符串目前看起来像

$strConn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = $dbName;

这很好用,但系统会提示我输入“用户名”和“密码”。我研究了 Access 连接字符串,但我只能找到一个包含密码(不是用户)的字符串

$strConn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=c:\App1\Your_Database_Name.mdb; Jet OLEDB:Database Password=Your_Password"

我尝试过使用它(以及用户/用户名/uid 等的组合),但没有找到任何可行的方法。

这是弹出的窗口(服务名称会自动填充):

看起来类似于:Oracle ODBC Driver Connect always asking for password

我认为这与链接到 oracle 数据库的 Access 数据库有关。这不是我能控制的吗?

【问题讨论】:

  • 您的安全状况究竟如何?它是加密的 .mdb、带有工作组文件的安全 .mdb 还是平面 .mdb?您的 .mdb 中是否有任何链接表? (如果是这样,您可能希望直接连接到这些链接表,而不是通过 Access)。不输入登录信息,不出现这个提示,可以使用access数据库吗?
  • 您是否尝试将 Access 表链接到 Oracle?我会尝试相反的。将表迁移到 Oracle 并将其链接回 Access。
  • @ErikvonAsmuth 我不确定它是什么类型的 .mdb。我认为它不安全,因为打开它时不会提示我输入凭据。但是,它确实有链接表。当我尝试打开一个时,我会看到与上面相同的“Oracle ODBC 驱动程序连接”窗口。如何直接访问链接表?可能值得一提的是,这个数据库属于一家大公司,我对它几乎没有控制权,所以我很难像其他一些 cmets 建议的那样对其进行重组。
  • 我也尝试过使用 ODBC,但是会弹出相同的提示 $strConn = "Provider=MSDASQL;FileDSN=$db;;UID=USERNAME;PWD=PASS;"我必须为 mdb 创建一个数据源名称,但要使用它。

标签: sql powershell ms-access connection-string oledb


【解决方案1】:

根据方便的参考页ConnectionStrings.com,像这样通过User Id=<username>Password=<password>

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;User Id=admin;
Password=Pa$$w0rd;

【讨论】:

  • 这是我尝试的第一件事。由于某种原因它不起作用。
  • 虽然 ConnectionStrings 通常是一个很好的资源,但用户 ID 仅在使用工作组文件进行工作组身份验证的情况下使用,在这种情况下,您需要指定工作组文件:Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb; Jet OLEDB:System Database=system.mdw;User ID=myUsername;Password=myPassword;。但是,我认为情况并非如此。
【解决方案2】:

您可以通过使用其连接字符串并填写用户名和密码来直接访问链接表。对于 Oracle,连接字符串结构可能因使用的提供程序而异。查看ConnectionStrings.com 以获取选项列表(最有可能的选项是Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=myUsername; Password=myPassword;)。

您可以通过在 Microsoft Access 中查询 MSysObjects 来获取链接表的当前连接字符串:

SELECT MSysObjects.Connect
FROM MSysObjects
WHERE MSysObjects.Name="MyLinkedTableName";

如果需要,您甚至可以更改连接字符串以包含您的用户名和密码(请参阅this answer)。

但是,请注意,最初在 Access 中链接表的人选择不包含用户名和密码。在不安全的 Access 数据库中包含用户名和密码可能会带来安全风险。

另外,请注意,如果您直接连接到 Oracle 数据库,则必须引用那里定义的表名,并使用适当的 SQL 变体来查询它。

【讨论】:

    猜你喜欢
    • 2011-02-03
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多