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

时间:2017-02-15 23:55:24

标签: 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中)连接到数据库

我已经使用localhost(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 个答案:

答案 0 :(得分:1)

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

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