我正在尝试从C#应用程序使用MongoDB Connector for BI。我正在使用MongoDB Connector for BI v2.2。
我的MongoDB服务是MongoDB Atlas云服务的副本集。
我使用以下命令启动了mongosqld.exe,并且所有启动都正常:
mongosqld.exe --mongo-uri "mongodb://bitsion-pro-mongodb01-shard-00-00-kbtkm.azure.mongodb.net:27017,bitsion-pro-mongodb01-shard-00-01-kbtkm.azure.mongodb.net:27017,bitsion-pro-mongodb01-shard-00-02-kbtkm.azure.mongodb.net:27017/?replicaSet=BITSION-PRO-MONGODB01-shard-0" --schema ".\drdl" --mongo-ssl --auth --sslPEMKeyFile mongoatlaspre.pem --addr 0.0.0.0:3307
然后我连接了我的mysql.exe客户端,一切顺利:
mysql.exe --host 127.0.0.1 --port 3307 -u usrDGago?source=admin -p DB_TuCarpeta_PRU --ssl-mode required --ssl-key mongoatlaspre.key --ssl-cert mongoatlaspre.crt --enable-cleartext-plugin
我的C#app是一个非常简单的控制台应用程序,它使用MySql.Data nuget包连接到mongosqld服务。
包:
<package id="MySql.Data" version="6.9.9" targetFramework="net461" />
这是我的片段:
string cnnString = "Server=localhost; Port=3307;Database=DB_TuCarpeta_PRU;Uid=usrDGago?source=admin;Pwd=XXXXXXXXXX;CertificateFile=E:\mongoatlaspre.pfx;CertificatePassword=!QAZxsw2;SSL Mode=Required;";
var connection = new MySqlConnection(cnnString);
connection.Open();
C#出错:
The host localhost does not support SSL connections.
请注意,如果我删除SSL Mode = Required或更改为None,则错误为:
Authentication to host 'localhost' for user 'usrDGago?source=admin' using method 'mysql_native_password' failed with message: ssl is required when using cleartext authentication.
我还在?source=admin
参数的末尾删除了Uid
,但结果相同。
mongodbsqld控制台出错:
2017-09-11T12:00:31.950-0300 I NETWORK [conn5] connection accepted from [::1]:58321 #5 (1 connection now open)
2017-09-11T12:00:31.959-0300 F NETWORK [conn5] handshake error: ERROR 1043 (08S01): recv handshake response error: ERROR 1105 (HY000): connection was bad
2017-09-11T12:00:31.960-0300 I NETWORK [conn5] end connection [::1]:58321 (0 connections now open)
您能否提供一些有关如何解决此问题的见解?
提前致谢。
.NET MySQL驱动程序不支持明文身份验证。因此,您需要使用MySQL的ODBC驱动程序而不是.NET驱动程序来使用ODBC连接。
我使用MySQL ODBC 5.3 Unicode驱动程序使用ODBC连接。
我的连接字符串为:
string cnnString = $"DSN=BI Connector DSN;Database=Northwind;Uid=admin;Pwd=1234;"
这有效,但查询执行速度非常慢!