通过ssl与vb.net进行远程mysql连接

时间:2018-12-04 15:22:36

标签: mysql vb.net ssh

我正在使用MySQL工作台访问远程数据库。目前正在工作: MySQL workbench screenshot

现在,我尝试使用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()行上收到以下错误:

:'使用方法'caching_sha2_password'对用户'me'的主机'127.0.0.1'的身份验证失败,并显示以下消息:用户'me'@'localhost'的访问被拒绝(使用密码:是)'

我想它与'caching_sha2_password'有关,因为在mysql工作台->用户和特权->我中,身份验证类型设置为标准。

编辑

我更改了这些行,现在可以正常工作了:)

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 :(得分:0)

您的连接字符串指向端口3306,但是您将值'0'传递给ForwardedPortLocal构造函数;这允许系统选择一个随机端口。

我相信您应该将构造函数更改为:

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

即明确设置boundPort参数(第二个参数)与您在连接字符串中传递的端口值相同。

当然,如果使用了3306本地端口(例如,如果您在默认端口上本地运行MySQL),则无法使用;您应该选择另一个端口,并在porrFwld构造函数和连接字符串中使用相同的值。远程端口应为3306(用于标准MySQL安装)。