无法与MariadB GSSAPI连接到PHP的DB,客户验证方法未知 我正在尝试使用MariadB GSSAPI插件在PHP中使用XAMPP的本地安装中使用MariadB GSSAPI插件来验证用户。我已经设置了XAMPP和一个有效的本地安装。现在我想连接到D ...

问题描述 投票:0回答:2

MariadB的GSSAPI身份验证似乎有效。我使用身份验证方法= GSSAPI创建了PhpMyAdmin的用户。在CLI中,我可以连接,请参阅下图:

succcessful mysql与域用户连接

试图与连接时 if (($dbcon=mysqli_connect("localhost","$mysql_userid","$password"))===FALSE) { exit("4:Login process failed while connecting to database"); echo "Debug-Fehlermeldung: " . mysqli_connect_error . PHP_EOL; }else{ $auth_result=TRUE; }

我正在收到以下错误:

Warning: mysqli_connect(): The server requested authentication method unknown to the client [auth_gssapi_client] in C:\xampp\htdocs\oa5-maria\trunk\login.php on line 82 Warning: mysqli_connect(): (HY000/2054): The server requested authentication method unknown to the client in C:\xampp\htdocs\oa5-maria\trunk\login.php on line 82 4:Login process failed while connecting to database

I已在my.ini文件中设置默认授权 - plugin = gssapi。但是我不知道这是否是正确的方法。 您有什么建议可以解决这个问题?

这是我的我的文件:

# Example MySQL config file for small systems. # # This is for a system with little memory (<= 64M) where MySQL is only used # from time to time and it's important that the mysqld daemon # doesn't use much resources. # # You can copy this file to # C:/xampp/mysql/bin/my.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options (in this # installation this directory is C:/xampp/mysql/data) or # ~/.my.cnf to set user-specific options. # # In this file, you can use all long options that a program supports. # If you want to know which options a program supports, run the program # with the "--help" option. # The following options will be passed to all MySQL clients [client] # password = your_password port=3306 socket="C:/xampp/mysql/mysql.sock" # Here follows entries for some specific programs # The MySQL server default-character-set=utf8mb4 [mysqld] port=3306 socket="C:/xampp/mysql/mysql.sock" basedir="C:/xampp/mysql" tmpdir="C:/xampp/tmp" datadir="C:/xampp/mysql/data" pid_file="mysql.pid" # enable-named-pipe key_buffer=16M max_allowed_packet=200M sort_buffer_size=512K net_buffer_length=8K read_buffer_size=256K read_rnd_buffer_size=512K myisam_sort_buffer_size=8M log_error="mysql_error.log" #neu für authentifizierung default-authentication-plugin=gssapi # Change here for bind listening # bind-address="127.0.0.1" # bind-address = ::1 # for ipv6 # Where do all the plugins live plugin_dir="C:/xampp/mysql/lib/plugin/" # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. # Note that using this option without enabling named pipes on Windows # (via the "enable-named-pipe" option) will render mysqld useless! # # commented in by lampp security #skip-networking #skip-federated # Replication Master Server (default) # binary logging is required for replication # log-bin deactivated by default since XAMPP 1.4.11 #log-bin=mysql-bin # required unique id between 1 and 2^32 - 1 # defaults to 1 if master-host is not set # but will not function as a master if omitted server-id =1 # Replication Slave (comment out master section to use this) # # To configure this host as a replication slave, you can choose between # two methods : # # 1) Use the CHANGE MASTER TO command (fully described in our manual) - # the syntax is: # # CHANGE MASTER TO MASTER_HOST=<host>, MASTER_PORT=<port>, # MASTER_USER=<user>, MASTER_PASSWORD=<password> ; # # where you replace <host>, <user>, <password> by quoted strings and # <port> by the master's port number (3306 by default). # # Example: # # CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, # MASTER_USER='joe', MASTER_PASSWORD='secret'; # # OR # # 2) Set the variables below. However, in case you choose this method, then # start replication for the first time (even unsuccessfully, for example # if you mistyped the password in master-password and the slave fails to # connect), the slave will create a master.info file, and any later # change in this file to the variables' values below will be ignored and # overridden by the content of the master.info file, unless you shutdown # the slave server, delete master.info and restart the slaver server. # For that reason, you may want to leave the lines below untouched # (commented) and instead use CHANGE MASTER TO (see above) # # required unique id between 2 and 2^32 - 1 # (and different from the master) # defaults to 2 if master-host is set # but will not function as a slave if omitted #server-id = 2 # # The replication master for this slave - required #master-host = <hostname> # # The username the slave will use for authentication when connecting # to the master - required #master-user = <username> # # The password the slave will authenticate with when connecting to # the master - required #master-password = <password> # # The port the master is listening on. # optional - defaults to 3306 #master-port = <port> # # binary logging - not required for slaves, but recommended #log-bin=mysql-bin # Point the following paths to different dedicated disks #tmpdir = "C:/xampp/tmp" #log-update = /path-to-dedicated-directory/hostname # Uncomment the following if you are using BDB tables #bdb_cache_size = 4M #bdb_max_lock = 10000 # Comment the following if you are using InnoDB tables #skip-innodb innodb_data_home_dir="C:/xampp/mysql/data" innodb_data_file_path=ibdata1:10M:autoextend innodb_log_group_home_dir="C:/xampp/mysql/data" #innodb_log_arch_dir = "C:/xampp/mysql/data" ## You can set .._buffer_pool_size up to 50 - 80 % ## of RAM but beware of setting memory usage too high innodb_buffer_pool_size=16M ## Set .._log_file_size to 25 % of buffer pool size innodb_log_file_size=5M innodb_log_buffer_size=8M innodb_flush_log_at_trx_commit=1 innodb_lock_wait_timeout=50 ## UTF 8 Settings #init-connect=\'SET NAMES utf8\' #collation_server=utf8_unicode_ci #character_set_server=utf8 #skip-character-set-client-handshake #character_sets-dir="C:/xampp/mysql/share/charsets" sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,NO_ENGINE_SUBSTITUTION log_bin_trust_function_creators=1 character-set-server=utf8mb4 collation-server=utf8mb4_general_ci [mysqldump] max_allowed_packet=16M [mysql] # Remove the next comment character if you are not familiar with SQL #safe-updates [isamchk] key_buffer=20M sort_buffer_size=20M read_buffer=2M write_buffer=2M [myisamchk] key_buffer=20M sort_buffer_size=20M read_buffer=2M write_buffer=2M [mysqlhotcopy] lower_case_table_names=0
    

客户和PHP之间的区别是,客户端与libmariaDB链接(因此,可以加载auth_gssapi_plugin,而mysqli则可以针对libmysql或PHP的内部mysqlnd驱动程序链接。
BesideKerberos/gssapi Mariadb还提供ED25519和PAM身份验证(通过Dialog插件),Libmysql和MySQLND不支持。
构建ext/mysqli与Mariadb连接器/C不幸的是无效,最近拒绝了该问题的最新拉动请求。

i遇到了在

Windows10

上运行的相同错误,并使用

php8.2.1
mariadb11.4.4
php xampp mariadb windows-authentication gssapi
2个回答
0
投票
在以下示例中,我正在重现“ php php致命错误:未知的mysqli_sql_exception:服务器请求的身份验证方法对客户端[auth_gssapi_client]

当然,您必须设置数据库值才能表示真实的数据库。

// Set the parameters for mysqli_connect(). $Host = 'localhost'; $User = 'my_database_user'; $Pass = 'my_database_password'; $Name = 'my_database_name'; $Port = null; $Socket = null; // Make some checks... // This will be the cause of the error. if (empty($pass)) $Pass = NULL; // Connect to the database. // The error will be generated due to a NULL parameter. $DB = mysqli_connect($Host, $User, $Pass, $Name, $Port, $Socket); if (mysqli_connect_errno() != 0) die('mysqli_connect() error'); else echo("<p>Connected...</p>"); // Close the Connection. mysqli_close($DB);

我的示例:

在调用mysqli_connect()之前,我们对参数进行了一些检查,例如:


0
投票

在此示例中,$ Pass是拼写错误的,因此它是不确定的,empty()返回true$pass将设置为null

; 如果您致电

Mysqli_connect($ host,$ user,$ pass,$ name,$ port,$ socket),则$ pass为nulsnull

,并返回我们在此处讨论的错误。您可以说这是一个愚蠢的错误,但这通常就是这样。
解释:

当mysqli_connect()接收到null作为密码时,PHP获取在mysqli.default_pw上保存的密码。如果未设置此值,MySQLI_Connect()将返回上述错误。该原则适用于所有mysqli_connect()参数,并且在php.ini文件中适用于它们:

mysqli.default_port,mysqli.default_socket,mysqli.default_host,mysqli.defeault_user

。如果您没有明确将参数设置为null,则总会有一个不存在的值或无效的值等。 。如php.ini中所述,这是一个非常糟糕的主意。任何PHP用户都可以使用这样的命令显示密码:

echo get_cfg_var("mysqli.default_pw");

结论: 最好要做的就是仔细检查和三倍检查所有mysqli_connect()参数的值,以查看它们是否有问题。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.