首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GSSAPI-8月份与PHP (Windows)

GSSAPI-8月份与PHP (Windows)
EN

Stack Overflow用户
提问于 2018-04-27 11:02:45
回答 1查看 931关注 0票数 0

目前,我正在一个干净的Windows域环境中进行数据库服务器的单点登录。

而且,由于MySQL企业和MSSQL服务器目前没有选择,所以它可以归结为MariaDB的GSSAPI插件。

这就是我现在拥有的:

服务器: MYDOMAIN Windows 7 x64成员 MariaDB 10.2.14 x64 Apache2 2.4.33 x64 VC11 + mod_authnz_sspi +PHP5.6.35+ mod_fcgid MariaDB ODBC驱动程序x64 HeidiSQL (与MariaDB安装程序一起交付的SQL)

FCGID看起来如下("A:“不是我的计算机上的软盘驱动器,而是我实际放置Apache2的地方):

代码语言:javascript
复制
<IfModule !fcgid_module>
LoadModule fcgid_module modules/mod_fcgid.so

FcgidIOTimeout 64
FcgidConnectTimeout 16
FcgidMaxRequestsPerProcess 200
FcgidMaxProcesses 500
FcgidMaxRequestLen 8131072

FcgidInitialEnv PHPRC "A:/php"
FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 200
FcgidWrapper "A:/php/php-cgi.exe" .php
</IfModule>

目录-Config如下所示:

代码语言:javascript
复制
<Directory "${SRVROOT}/htdocs">
Options Indexes FollowSymLinks
AllowOverride None

AuthName "MYSERVER"
AuthType SSPI
SSPIAuth On
SSPIAuthoritative On
SSPIOfferBasic On
SSPIOfferSSPI On

<RequireAll>
    <RequireAny>
        Require sspi-group mygroup
    </RequireAny>
    <RequireNone>
        Require user "ANONYMOUS LOGON"
    </RequireNone>
</RequireAll>

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

<FilesMatch \.php>
    AddHandler fcgid-script .php
</FilesMatch>

Options +ExecCGI
</Directory>

对php.ini没有什么特别之处,只是以php.ini开发(在PHP包中交付)为例,启用了php_mysql、php_mysqli、php_mbstring和php_ldap扩展。

我当前的MariaDBs my.ini如下所示:

代码语言:javascript
复制
[mysqld]
datadir=M:/data
port=3306

key_buffer_size = 384M
max_allowed_packet = 512M
table_open_cache = 512

read_buffer_size = 256M
read_rnd_buffer_size = 128M
sort_buffer_size = 512M
query_cache_size = 32M
join_buffer_size = 128M

default-storage-engine = INNODB
innodb-page-size = 65536
innodb_buffer_pool_size = 4G
innodb_write_io_threads = 8
innodb_read_io_threads = 8
innodb_thread_concurrency = 16
innodb_log_buffer_size = 8M
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 90
innodb_lock_wait_timeout = 120

character-set-server=utf8

thread_concurrency = 8
thread_cache_size = 8

[client]
port = 3306
plugin-dir = M:/lib/plugin

[mysqldump]
quick
max_allowed_packet = 512M

[mysql]
no-auto-rehash
safe-updates

客户端: MYDOMAIN Windows 10 x64成员 Internet Explorer 11 MySQL工作台6.0CE (6.0.7.11215)

在设置所有内容之后,我通过HeidiSQL (或任何SQL)与根帐户连接到MariaDB,并创建实际用户,如下面所述,https://mariadb.com/kb/en/library/authentication-plugin-gssapi/

代码语言:javascript
复制
CREATE USER myuser IDENTIFIED VIA gssapi AS 'myuser@MYDOMAIN';

现在,在与HeidiSQL连接或在向MySQL工作台提供auth_gssapi_client.dll之后(当进程以myuser的身份运行时),我在连接到MariaDB时没有问题。

在尝试连接PHP之前,我查看了phpinfo();这里的一切看起来都和预期的一样,包括$_SERVER vars REMOTE_USER、PHP_AUTH_USER和PHP_AUTH_PW。这是我的index.php:

代码语言:javascript
复制
<?php
    //phpinfo(); exit;
    $m = mysql_connect("localhost", $_SERVER["PHP_AUTH_USER"]);
    $mi = mysqli_connect("localhost", $_SERVER["PHP_AUTH_USER"]);
    $c = odbc_connect("MariaDB", $_SERVER["PHP_AUTH_USER"], "");
?>

正如您可能在某个时候看到的,我使用SystemDSN ODBC连接器设置了一个MariaDB,并将其命名为MariaDB,指向MariaDBs插件dir。

有了这些,我至少可以试着让它发挥作用,在那之后,我会担心以下这些:

代码语言:javascript
复制
Warning: mysql_connect(): The server requested authentication method unknown to the client [auth_gssapi_client] in A:\htdocs\index.php on line 3
Warning: mysql_connect(): The server requested authentication method unknown to the client in A:\htdocs\index.php on line 3
Warning: mysqli_connect(): The server requested authentication method unknown to the client [auth_gssapi_client] in A:\htdocs\index.php on line 4
Warning: mysqli_connect(): (HY000/2054): The server requested authentication method unknown to the client in A:\htdocs\index.php on line 4

我找不到任何解决方案,说明如何将mysql或mysqli的php扩展(或者我用同样的结果pdo_mysql测试)指向来自MariaDB的auth_gssapi_client.dll插件。所以如果有人能指给我看,我也会很感激的。

但真正的问题是,我也(很可能)会遇到mysql和mysqli,这是odbc连接的结果.:

代码语言:javascript
复制
Warning: odbc_connect(): SQL error: [ma-3.0.3]GSSAPI name mismatch, requested 'myuser@MYDOMAIN', actual name 'myserver$@MYDOMAIN', SQL state 28000 in SQLConnect in A:\htdocs\index.php on line 5

进程本身是作为本地系统运行的ofc,遗憾的是GSSAPI只对运行进程的用户感兴趣,而对经过身份验证的用户不感兴趣。

我在互联网上搜索,并尝试了大约一个星期的东西,以使它发挥作用,虽然仍然没有任何有效的结果(或任何剩余的想法,在这方面的下一步尝试)。

所以,如果有人知道如何让它发挥作用,那就太好了。

格里茨TheSkyGuy

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-27 15:09:56

警告: odbc_connect():SQL错误: ma-3.0.3GSSAPI名称不匹配,请求'myuser@MYDOMAIN',实名'myserver$@MYDOMAIN',第5行SQLConnect中的SQL状态为28000

这意味着您的应用程序(apache?)连接到计算机帐户,可能是以NetworkService用户的身份运行,或者类似的。如果您可以在域用户"myuser“凭据下运行它,那么它将连接。

或者,您可以创建与计算机帐户相对应的MariaDB用户帐户,并将其用于连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50061026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档