MS Access连接字符串中的硬编码凭据(密码保护)

时间:2017-05-24 19:12:10

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

我想硬编码连接到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"

我尝试过使用此功能(以及用户/用户名/用户名等的组合)但未发现任何有效的功能。

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

enter image description here

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

我认为它与链接到oracle数据库的Access数据库有关。这不在我手中吗?

2 个答案:

答案 0 :(得分: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变体进行查询。

答案 1 :(得分:0)

根据方便的参考页ConnectionStrings.com,如此传递User Id=<username>Password=<password>

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