Как подключить базу данных MySQL в C#

Вопрос или проблема

Я попробовал множество способов, но ничего не помогло. На моем сервере нет SSL-сертификата. В данный момент я получаю ошибку “Не удается подключиться к любому из указанных хостов MySQL”

Вот мой код:

using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace testDB
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string connectionString = "Server=ip_my_server;Port=3306;Database=main;Uid=root;Pwd=my_pas;SSL Mode=None";

            try
            {
                using (MySqlConnection connection = new MySqlConnection(connectionString))
                {
                    connection.Open();
                    MessageBox.Show("Подключение успешно!");
                    connection.Close();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка подключения: " + ex.Message);
            }

        }
    }
}

Я изменял строку подключения разными способами, пытался сделать это через MySqlConnectionStringBuilder, но ничего не сработало

Ответ или решение

Для подключения к базе данных MySQL из C# существует несколько важных моментов, которые следует учесть. Ошибка "Unable to connect to any of the specified MySQL hosts" может возникать по разным причинам, и я готов помочь вам разобраться в этой проблеме.

Вот шаги, которые вам нужно выполнить для успешного подключения:

  1. Проверка конфигурации сервера MySQL:

    • Убедитесь, что ваш MySQL сервер запущен и доступен по указанному IP-адресу.
    • Проверьте, что MySQL слушает на порту 3306. Вы можете использовать команду netstat -an | find "3306" в терминале для проверки.
    • Убедитесь, что ваш сервер позволяет подключения с удалённых IP-адресов. Это можно сделать, проверив файл конфигурации my.cnf или my.ini (опция bind-address должна быть установлена на 0.0.0.0 или ваш конкретный IP).
  2. Настройки безопасности:

    • Убедитесь, что пользователю root предоставлены все необходимые привилегии для доступа к базе данных из вашего IP-адреса. Это можно сделать с помощью команды:
      GRANT ALL PRIVILEGES ON main.* TO 'root'@'%' IDENTIFIED BY 'my_pas';
      FLUSH PRIVILEGES;
    • Замените '%' на конкретный IP-адрес, если вы хотите ограничить доступ для большей безопасности.
  3. Проверка соединения:

    • Убедитесь, что ваш брандмауэр (как на уровне системы, так и сети) позволяет соединения по порту 3306.
  4. Использование правильного подключения в C#:
    На вашем коде есть небольшая ошибка в строке подключения. Рекомендуется использовать SslMode=None без пробелов между SSL и Mode. Вот исправленный код:

    string connectionString = "Server=ip_my_server;Port=3306;Database=main;Uid=root;Pwd=my_pas;SslMode=None";
  5. Использование MySqlConnectionStringBuilder:
    Если вы хотите построить строку подключения с помощью MySqlConnectionStringBuilder, это может выглядеть следующим образом:

    var builder = new MySqlConnectionStringBuilder
    {
        Server = "ip_my_server",
        Port = 3306,
        Database = "main",
        UserID = "root",
        Password = "my_pas",
        SslMode = MySqlSslMode.None
    };
    
    using (var connection = new MySqlConnection(builder.ConnectionString))
    {
        try
        {
            connection.Open();
            MessageBox.Show("Подключение успешно!");
        }
        catch (Exception ex)
        {
            MessageBox.Show("Ошибка подключения: " + ex.Message);
        }
    }

Если все вышеперечисленные шаги не помогли, попробуйте подключиться к MySQL серверу с помощью другого клиента (например, MySQL Workbench или командной строки), чтобы удостовериться, что проблема не программная, а в настройках сервера или сети.

Следуя указанным шагам и рекомендациям, вы должны устранить проблемы с подключением к MySQL серверу. Если у вас будут дополнительные вопросы или появятся новые ошибки, не стесняйтесь задать!

Оцените материал
Добавить комментарий

Капча загружается...