连接到 MySQL Linux 数据库的 C# 问题

标签 c# mysql linux database connection

这是我第一次使用 PuTTY + 专用 Linux 服务器

我已经在我的专用 Linux 服务器 上安装了 MySQL 服务器客户端:

apt-get install mysql-server

安装后,我必须设置 MySQL 服务器密码,这就是我所做的。 然后我创建了一个数据库和一个表,我在其中插入了一行。

CREATE DATABASE frag_huans;

use frag_huans;

CREATE TABLE hero_data (
-> ID int(2),....);

INSERT INTO hero_data VALUES ('1',...);

这实际上是到目前为止我对 PuTTY 所做的一切

我现在试图实现的是通过我的 C# 类(在 Unity3D 中)连接到数据库

我已经用我的本地主机 (xampp) 服务器完成了此操作,并且运行良好。

string constr = "Server=localhost;Database=letzter;User ID=root;Password=;Pooling=true";

现在我想以同样的方式连接到 Linux MySQL 数据库:

string constr = "Server=myServerIP;Database=frag_huans;Uid=root@serverIP;Pwd=myPassword";

其中“myServerIP”绝对是我的服务器 IP,Uid 是在命令行开始时在 PuTTY 中显示的 ID。

无法建立连接,Unity调试器提示:

MySql.Data.MySqlClient.MySqlException: Unable to connect to any of the specified MySQL hosts. ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it.

  at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP, Boolean requireSocketPolicy) [0x00000] in <filename unknown>:0 
  at System.Net.Sockets.Socket+Worker.Connect () [0x00000] in <filename unknown>:0 
  --- End of inner exception stack trace ---
  at MySql.Data.MySqlClient.NativeDriver.Open () [0x00000] in <filename unknown>:0 
  at MySql.Data.MySqlClient.Driver.Open () [0x00000] in <filename unknown>:0 
  at MySql.Data.MySqlClient.Driver.Create (MySql.Data.MySqlClient.MySqlConnectionStringBuilder settings) [0x00000] in <filename unknown>:0 
  at MySql.Data.MySqlClient.MySqlPool.CreateNewPooledConnection () [0x00000] in <filename unknown>:0 
  at MySql.Data.MySqlClient.MySqlPool.GetPooledConnection () [0x00000] in <filename unknown>:0 
  at MySql.Data.MySqlClient.MySqlPool.TryToGetDriver () [0x00000] in <filename unknown>:0 
UnityEngine.Debug:Log(Object)
HeroDB:Awake() (at Assets/Preload/HeroDB.cs:51)

在“Server=...”处使用另一个值告诉我找不到主机,这确保我我的主机地址似乎是正确的

我还尝试为 MySQL 服务器创建另一个“用户” + 授予这个所有权限:

CREATE USER fh@myServerIP IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES on frag_huans.* to fh@myServerIP;
FLUSH PRIVILEGES;

将连接字符串更改为上面显示的用户并没有改变结果。

我认为 Linux 服务器/MySQL 数据库阻止了我的访问。是否有任何我必须为连接设置权限?导致此问题的可能原因是什么?我见过很多人遇到“无法建立连接,因为目标机器主动拒绝”的问题,但似乎有太多不同的情况。

如果你能以任何方式帮助我,我会很高兴

提前致谢,Cshaprest

最佳答案

  1. 从客户端计算机尝试以下命令 # telnet <serverip> 3306
  2. 如果第一点失败,检查是否有防火墙规则接受端口 3306 上的所有传入 mysql 连接。
  3. 服务器接受来自所有 ip 的连接,如果 mysql id 绑定(bind)到 0.0.0.0 检查它在/etc/my.cnf
  4. 这只是为了确认,我假设您在下面的用户创建命令中添加了客户端 IP[不是服务器 IP]。

    GRANT ALL PRIVILEGES on frag_huans.* to fh@myclientServerIP; FLUSH PRIVILEGES;

关于连接到 MySQL Linux 数据库的 C# 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42262344/

相关文章:

C# 将 2D double 组转换为灰度图像

c# - 为什么 View 设置为 Details 的 C# ListView 控件仍然为空?

MySQL字符串编码存储空间

linux - 使用mod_jk在apache和tomcat之间互通时无法连接到ajp端口

c# - 如何将方面应用于特定元素(例如,对于 LocationInfo 类型参数或 PropertyInfo)?

c# - 使用 C++ 或 C# 与端口通信?

mysql - 如何执行MySQL order by x where (x=col3 if col3!=null, else x=col2)?

python - 在没有 For 循环的 Python 中从 MySQL 中选择数组

linux - 如何标记目录

linux - 如何从管道 linux 命令连续将输出发送到文件?