【问题标题】:PHP: Connect to MS SQL Server using Domain user and PasswordPHP:使用域用户和密码连接到 MS SQL Server
【发布时间】:2014-01-14 15:49:20
【问题描述】:

我有 WAMP,并试图通过使用以下 PHP 命令输入域用户和密码来连接到我的 SQL Server 2008 数据库:

$serverName = "MySQLServer\Instance"; //serverName\instanceName
$connectionInfo = array( "Database"=>"dbName", 
                         "UID"=>"myADUserName", "PWD"=>"MyPassword");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

据我了解,它正在尝试使用 SQL Server 创建的用户而不是来自 Active Directory 的用户进行身份验证,因此我收到以下错误消息:

Array ( [0] => 
   Array ( [0] => 28000 [SQLSTATE] => 28000 
           [1] => 18456 [code] => 18456 
           [2] => [Microsoft][SQL Server Native Client 10.0]
                  [SQL Server]Login failed for user 'myADUserName'. 
                  [message] => [Microsoft]
                      [SQL Server Native Client 10.0]
                      [SQL Server]Login failed for user 'myADUserName'.  
         ) 
        [1] => 
   Array ( [0] => 28000 [SQLSTATE] => 28000 
           [1] => 18456 [code] => 18456 
           [2] => [Microsoft][SQL Server Native Client 10.0]
                  [SQL Server]Login failed for user 'myADUserName'. 
                  [message] => [Microsoft]
                      [SQL Server Native Client 10.0]
                      [SQL Server]Login failed for user 'myADUserName'. 
         ) 
     )

在带有 WAMP 的 PHP 中这可能吗?

我已经阅读了有关将 wampapache 服务中的登录帐户更改为 myADUserName 的信息,但用户没有服务器上的管理员访问权限来允许这样做,我不想将一个帐户绑定到我的所有 PHP应用程序。

【问题讨论】:

  • 你的问题解决了吗?
  • 不完全是我想要的,但我最终在 Active Directory 中创建了一个服务帐户并将其分配给 wampapache 服务以便它启动它。
  • 但是使用windows认证是正确的方式。

标签: php sql-server wamp


【解决方案1】:

当您分配 "UID"=>"myADUserName", "PWD"=>"MyPassword" 时,您使用的是 sql-authentication 而不是 Windows 身份验证。 但是您可以将该用户/密码组合创建到sql-server as sql-login -> SQL Server Authentication

当你想使用windows authentication 时,你不需要指定uid 和pwd。身份验证取自正在运行的 apache 进程。诅咒一个需要运行到该 Windows 帐户。

Microsoft documentation

备注 如果 UID 和 PWD 密钥的值未在 可选 $connectionInfo 参数,将尝试连接 使用 Windows 身份验证。有关连接到的更多信息 服务器,请参阅如何:使用Windows Authentication 连接和如何 to:使用SQL Server Authentication连接。

【讨论】:

  • 当你想使用windows认证时,你不需要指定uid和pwd。 +1
【解决方案2】:

看起来很奇怪,但这个对我有用,

$dbName='dB-Name';
$dbUser='User1';
$dbPass='B4X345ZXsaoi0omkLH';

 $connectionInfo = array( "Database"=>$dbName, "UID"=>$dbUser, "PWD"=>$dbPass);

如果您使用的是 SQLSERVER,这将不适用于 php 5.5(我使用的是此版本没有测试任何其他版本)

$connectionInfo = array( "Database"=>"DBName", "UID"=>"User1", "PWD"=>"B4X345ZXsaoi0kLH");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多