【发布时间】:2019-03-25 21:01:32
【问题描述】:
在开始开发我的应用程序之前,我一直在尝试让一些初始代码正常工作。 我可能在一年前就进行了这项工作,所以有些事情告诉我存在更新/版本问题。 但是任何帮助都是好的。
我有一个用 apache、MariaDB、php 等设置的树莓派。我有一个简单的网页正在运行,所以 apache 很好,我有另一个网页从表中提取数据,所以 MariaDB 很好(很好,给定我的问题)。我已经设置了 myphpadmin,可以登录创建新的数据库和用户等。
现在我想让 UWP 应用与我的 pi 上托管的数据库进行交互。我使用 SELECT 和 INSERT 仅针对特定数据库创建了一个新用户(希望这可以减少安全问题,但我是新手,所以也许我希望如此)。
然后我还找到了 mariadb 配置文件并注释了 bind-address 行。 skip-networking 行不再在文件中,所以忽略它。 (这是文档所说的允许远程连接)。
我在路由器上打开了端口 3306,我也有一个域名并使用 no-ip,但我认为这一切都很好,因为 apache 运行良好。看到有人在谈论 SSH,我更改了我的 ssh 端口,但我认为这不是问题。
然后是 UWP。
上次我尝试这个时,我不得不使用 MySQL Connector Net 6.7.9,因为较新的版本不适用于 RT。所以我已将此添加到项目引用中。
现在为了简单地测试连接,我有一个按钮和 TextBlock,单击按钮尝试连接并输出异常/结果。 尝试了 conn 字符串生成器以及直接的字符串,都不起作用。
private void ConnectDatabase_Click(object sender, RoutedEventArgs e)
{
string ConnString;
MySqlConnection Conn;
MySqlConnectionStringBuilder Csb = new MySqlConnectionStringBuilder();
Csb.Server = "http://rnd-domain.me";
Csb.Port = 3306;
Csb.UserID = "usr";
Csb.Password = "passwd";
Csb.Database = "testdb";
ConnString = "server=http://rnd-domain.me;database=testdb;uid=usr;pwd=passwd;";
Conn = new MySqlConnection(ConnString);
try
{
Conn.Open();
DbUpdateText.Text = "connected";
Conn.Close();
}
catch(Exception ex)
{
DbUpdateText.Text = ex.Message;
}
}
当我单击按钮时,ex.Message 是“无法连接到任何指定的 MySQL 主机。”。 应用程序没有抛出任何错误,只是这条无益的消息。
我在 google 上搜索了这个并浪费了我周日 80% 的时间来尝试让它工作。我添加了 sslmode=none、charset=utf8、port=3306。我尝试使用 server=localhost 或使用我当前的 ip,甚至使用我的 mariadb 主用户(不是 root)。
可能是什么问题?
谢谢。
编辑: 我刚刚使用了 pi 的内部 IP 并得到了一个新的 ex.Message,了解了这个关于 SSl 的信息,添加了 sslmode=none 并且一切正常。
所以现在它只是解决了域名问题?
【问题讨论】: