繁体   English   中英

无法在另一台服务器上连接Mysql

[英]Cannot connect Mysql on another server

我创建了一个DotNet应用,该应用将一些数据插入数据库中,以管理这种情况并处理不同的数据库配置,我创建了一个名为cred.json的json,其中包含有关服务器连接的所有信息。 结构是这样的:

{
  "Server":"localhost",
  "Database":"mydb",
  "User":"root",
  "Password":"root",
  "SslMode":false,
  "CharacterSet":"utf8",
  "Port":"3307"
}

连接类包含一个名为Connect的方法,该方法读取cred.json可用的配置:

var json = JsonConvert.DeserializeObject<Cred>(File.ReadAllText("cred.json"));

MySqlConnectionStringBuilder conn = new MySqlConnectionStringBuilder();
 conn.Server = json.Server;
 conn.Database = json.Database;
 conn.UserID = json.User;
 conn.Password = json.Password;
 conn.SslMode = GetSslMode(json.SslMode);
 conn.CharacterSet = json.CharacterSet;
 conn.Port = json.Port;

MySqlConnection = new MySqlConnection(conn.ToString());
MySqlConnection.Open();

而且我还有一个名为GetSslMode的方法,该方法返回特定的SslMode

private MySqlSslMode GetSslMode(string sslMode)
{
    switch (sslMode)
    {
        case "Required":
            return MySqlSslMode.Required;
        case "VerifyCA":
            return MySqlSslMode.VerifyCA;
        case "VerifyFull":
            return MySqlSslMode.VerifyFull;
        default:
            return MySqlSslMode.None;
    }
}

模型Cred是一个简单的类,其中包含json的结构:

class Cred
{
    public string Server { get; set; }
    public string Database { get; set; }
    public string User { get; set; }
    public string Password { get; set; }
    public string SslMode { get; set; }
    public string CharacterSet { get; set; }
    public uint Port { get; set; }
}

当代码到达MySqlConnection.Open(); 在Windows上可以运行,但是当我在Linux上尝试将端口更改为80我得到:

连接必须有效且开放

但是凭据正确,如何诊断问题?

mysql的默认端口是3306,我怀疑您的mysql服务器是否在Linux的端口80上运行。 您很可能在Linux环境(也使用了Apache或Nginx)上的该端口上或在使用其REST API时访问Web应用程序。

如果一切都在您的本地环境上运行,但是当您在远程(Linux)服务器上使用它时无法运行,则可能是您尝试从远程服务器访问同一数据库,但是您在配置中使用了localhost或碰巧使用正确的ip /连接字符串,但存在一些权限问题。 另一个常见错误是禁用了对mysql数据库服务器(或给定用户)的远程访问,因此可能需要进行设置(即ssh访问)或编辑mysql serlvler的配置设置。

我的猜测是您的mysql守护进程未以root身份运行,只有root用户可以在1024以下的端口上进行绑定。但这可能是10件事。 我的建议是,在默认端口上运行mysql。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM