удаленное соединение MySQL с vb.net через SSL - PullRequest
0 голосов
/ 04 декабря 2018

Я использую MySQL для доступа к удаленной базе данных.В настоящее время это работает: Скриншот рабочего места MySQL

Теперь я попытался получить доступ к той же базе данных с Visual Studio 2017, vb.net.Это то, что у меня есть:

Dim connectionInfo As PasswordConnectionInfo
Dim client As SshClient
Dim portFwld As ForwardedPortLocal
connectionInfo = New PasswordConnectionInfo("ipaddress", 22, "me", "password1") With {
        .Timeout = TimeSpan.FromSeconds(30)
    }
    client = New SshClient(connectionInfo)
    client.Connect()
    If client.IsConnected Then
        MsgBox("SSH")
    Else
        MsgBox("Wrong")
    End If

    portFwld = New ForwardedPortLocal("127.0.0.1", 0, "127.0.0.1", 3306)

    client.AddForwardedPort(portFwld)

    portFwld.Start()

    MsgBox("Started")

    conn = New MySqlConnection("server = 127.0.0.1; port = 3306; uid = 'me'; password = 'password'; database='xxx'")

    MsgBox(conn.ConnectionString)


    conn.Open()

К сожалению, я получаю следующую ошибку в строке conn.Open ():

: 'Аутентификация на хосте' 127.0.0.1 'дляпользователь 'me', использующий метод 'caching_sha2_password', завершился ошибкой с сообщением: доступ запрещен для пользователя 'me' @ 'localhost' (используется пароль: YES) '

Я полагаю, что он как-то связан с' caching_sha2_password ', потому чтов mysql workbench -> Users and Privileges -> me, тип аутентификации установлен на Standard.

Edit

Я изменил эти строки, и теперь он работает:)

portFwld = New ForwardedPortLocal("127.0.0.1", 3305, "127.0.0.1", 3306)
(...)
conn = New MySqlConnection("server = 127.0.0.1; port = 3305; uid = 'me'; password = 'password'; database='xxx'; ssl mode = none;")

Два небольших дополнительных вопроса:

  1. Имеет ли значение, какой номер порта я использую?Я выбрал 3305, но могу ли я выбрать случайные числа?
  2. Я должен был поставить 'ssl mode = none', это угроза безопасности?

Спасибо

1 Ответ

0 голосов
/ 06 декабря 2018

Строка подключения указывает на порт 3306, но вы передаете значение '0' конструктору ForwardedPortLocal;это позволяет системе выбрать произвольный порт.

Полагаю, вам следует изменить конструктор на:

portFwld = New ForwardedPortLocal("127.0.0.1", 3306, "127.0.0.1", 3306)

, то есть явно установить для параметра boundPort (второй) то же значение порта, которое вы передаете в строке подключения.

Конечно, если используется локальный порт 3306 (например, если MySQL запущен локально на порте по умолчанию), это не будет работать;Вы должны выбрать другой порт и использовать то же значение в конструкторе porrFwld и строке подключения.Удаленный порт должен быть 3306 (для стандартной установки MySQL).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...