来自C#的MongoDB Connector for BI

时间:2017-09-05 12:37:49

标签: c# mysql mongodb connector

我试图从C#应用程序使用MongoDB Connector for BI。我正在使用MongoDB Connector for BI v2.2。

我的MongoDB服务是MongoDB Atlas云服务的副本集。

mongosqld

我使用以下命令启动了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

mongosqld started OK

的mysql.exe

然后我连接了我的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

mysql.exe retrieves data

C#app

我的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)

您能否提供一些有关如何解决此问题的见解?

提前致谢。

2 个答案:

答案 0 :(得分:1)

.NET MySQL驱动程序不支持明文身份验证。因此,您需要使用MySQL的ODBC驱动程序而不是.NET驱动程序来使用ODBC连接。

答案 1 :(得分:0)

我使用MySQL ODBC 5.3 Unicode驱动程序进行ODBC连接。

我的连接字符串为:

string cnnString = $"DSN=BI Connector DSN;Database=Northwind;Uid=admin;Pwd=1234;"

这样可行,但查询执行速度非常慢!