尝试使用 Windows 身份验证连接到 MySQL 时出现 NullReferenceException

NullReferenceException when trying to connect to MySQL with Windows authentication

我正在尝试使用 Windows 身份验证(集成安全性)连接到本地 MySQL 数据库。我使用以下连接字符串:

server=localhost;database=mydatabase;integratedsecurity=True

MySqlConnection.Open() 我从内部深处的某个地方得到一个 `NullReferenceException。这是堆栈跟踪:

at MySql.Data.MySqlClient.Authentication.MySqlNativePasswordPlugin.MoreData(Byte[] data)
at MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.AuthenticationChange()
at MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.HandleAuthChange(MySqlPacket packet)
at MySql.Data.MySqlClient.Authentication.MySqlAuthenticationPlugin.Authenticate(Boolean reset)
at MySql.Data.MySqlClient.NativeDriver.Authenticate(String authMethod, Boolean reset)
at MySql.Data.MySqlClient.NativeDriver.Open()
at MySql.Data.MySqlClient.Driver.Open()
at MySql.Data.MySqlClient.Driver.Create(MySqlConnectionStringBuilder settings)
at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection()
at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver()
at MySql.Data.MySqlClient.MySqlPool.GetConnection()
at MySql.Data.MySqlClient.MySqlConnection.Open()

关于我的设置的一些细节:

这是服务器或连接器中的错误吗?还是我的连接字符串有误?

Windows 身份验证需要 Windows Native Authentication Plugin 安装和启用。而且此功能仅在其商业(企业)版上可用。如果你用的是社区版,好像不能用这个功能,要用标准的连接字符串:

server=server_address;uid=user_id;pwd=password;port=mysql_port;database=your_database

定义服务器时使用您的IP地址。不使用本地主机。

connstr=[ip adress];database=mydatabase;uid=[uid];password=[password];
integratedsecurity=True

MySqlConnection conn=new MySqlConnection(connstr);