Unity连接MariaDB报错:不支持auth_gssapi_client认证方法
解决Unity连接MariaDB时的
auth_gssapi_client认证错误 错误详情
MySqlException: Authentication method 'auth_gssapi_client' not supported by any of the available plugins. MySql.Data.MySqlClient.NativeDriver.Open () (at <13314bc2115d4bd2a5d896df29fb7179>:0) MySql.Data.MySqlClient.Driver.Open () (at <13314bc2115d4bd2a5d896df29fb7179>:0) MySql.Data.MySqlClient.Driver.Create (MySql.Data.MySqlClient.MySqlConnectionStringBuilder settings) (at <13314bc2115d4bd2a5d896df29fb7179>:0)
问题背景
Unity多人游戏开发中,通过官方MySQL Connector/NET的MySql.Data.dll连接MariaDB,仅将该DLL放入Plugins文件夹,尝试过.Net、Mono版本及Windows安装包,均触发上述错误,且找不到my.cnf/my.ini配置文件。
可行解决方案
1. 修改连接字符串强制兼容认证
直接在连接字符串中指定兼容的认证插件,关闭SSL并允许公钥检索,修改后的代码如下:
string connectionString = $"Server={server};Port={port};Database={database};Uid={user};Pwd={password};SslMode=None;AllowPublicKeyRetrieval=true;AuthPlugin=mysql_native_password;";
此方法无需修改服务器配置,优先尝试。
2. 调整数据库用户的认证插件
如果有权限操作MariaDB服务器,执行SQL语句将目标用户的认证方式改为mysql_native_password:
ALTER USER '你的用户名'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;
注意:%表示允许所有IP访问,若需限制客户端IP,替换为Unity运行环境的具体IP地址。
3. 替换为MariaDB专属驱动
MySQL官方驱动对MariaDB的兼容性有限,改用MariaDB官方的Connector/NET:
- 下载完整驱动包,将所有依赖DLL(如
MySqlConnector.dll、System.Buffers.dll等)放入Unity的Plugins文件夹,替换原有的MySql.Data.dll - 将代码中的命名空间从
MySql.Data.MySqlClient改为MySqlConnector,重新适配连接逻辑
4. 配置MariaDB服务器默认认证插件
若能找到MariaDB的配置文件(Linux通常在/etc/mysql/mariadb.conf.d/目录下,文件名可能是50-server.cnf;Windows则在安装目录的conf或data文件夹,可能名为mariadb.ini),添加以下配置:
[mysqld] default_authentication_plugin=mysql_native_password
保存后重启MariaDB服务,新创建的用户会默认使用兼容认证方式。
内容的提问来源于stack exchange,提问作者user21302417
相关产品推荐
相关产品推荐

