这是我第一次使用 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
答案 0 :(得分:1)
# telnet <serverip> 3306
这只是为了确认,我假设您在以下用户创建命令中添加了客户端IP [而不是服务器IP]。
GRANT ALL PRIVILEGES on frag_huans.* to fh@myclientServerIP;
FLUSH PRIVILEGES;