4

I'm connecting to a MySQL server that requires SSL, using a MySqlConnection:

var connection = new MySqlConnection("Data Source=127.0.0.1;Database=MyDb1;User Id=root;Password=blabla;encrypt=true");

This succeeds if the server doesn't require SSL, but after executing GRANT USAGE ON *.* TO 'root'@'localhost' REQUIRE SSL; on the server, it starts failing with:

ProviderIncompatibleException: The provider did not return a ProviderManifestToken string. ---> MySql.Data.MySqlClient.MySqlException: Authentication to host '127.0.0.1' for user 'root' using method 'mysql_native_password' failed with message: Access denied for user 'root'@'localhost' (using password: YES) ---> MySql.Data.MySqlClient.MySqlException: Access denied for user 'root'@'localhost' (using password: YES)

How is SSL enabled? Should something be added to the connection string or is it done programmatically?

5 Answers 5

7

OK, after some more searching I found the answer at How determine if using SSL in a MySql Connection?.

I had to add SSL Mode=Required instead of encrypt=true to the connection string:

var connection = new MySqlConnection("SSL Mode=Required;Data Source=127.0.0.1;Database=MyDb1;User Id=root;Password=blabla");

Now I'm getting a new error - MySql.Data.MySqlClient.MySqlException: “The host localhost does not support SSL connections.”, but I think I'll figure it out.

Sign up to request clarification or add additional context in comments.

Comments

1

This connecting string work for me with MySQL Comunity Server 8.0.35.

  1. Look at here to generate SLL Certificates for MySQL Server (*.pem) and for C# Client (client.pfx)

  2. I use connString like this:

String connString = "server=localhost;
                     user id=root;
                     database=YOUR_DB_NAME;
                     persistsecurityinfo=True;
                     password=YOUR_DB_PASSWORD;
                     allowuservariables=True;
                     allowbatch=True;
                     sslmode=Required;
                     certificatepassword=YOUR_PFX_CERTIFICATE_PASS;
                     certificatefile=YOUR_PFX_CERTIFICATE_FILE;"

Example

 YOUR_DB_NAME = discount_card
 YOUR_DB_PASSWORD = db_p455w0rd
 YOUR_PFX_CERTIFICATE_PASS = pfx_p455w0rd
 YOUR_PFX_CERTIFICATE_FILE = D:\\certificates\\client.pfx

Comments

-2

var connection = new MySqlConnection("Data Source=127.0.0.1;Database=MyDb1;User Id=root;Password=blabla;SSL Mode=None");

For me Working Fine...

2 Comments

For anyone looking for an answer to this question, this is not it. As you can see, the question is how to use SSL, not how to disable it.
Scary how this is positioned at the top, when it simply ignores SSL
-2

You can use this in your connection string.

 SSL Mode=0

Comments

-2

You can try with another user like 'User1@%' or '[email protected]' I hope that can help you

1 Comment

As it’s currently written, your answer is unclear. Please edit to add additional details that will help others understand how this addresses the question asked. You can find more information on how to write good answers in the help center.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.