允许远程机器上的 mythfrontend 访问第二台机器上运行的 mythbackend

允许远程机器上的 mythfrontend 访问第二台机器上运行的 mythbackend

在 do-release-upgrade 将我从已停用的 Mythbuntu 发行版切换到 Ubuntu,并在此过程中破坏了我的大量 MythTV 软件包之后,我几乎让所有东西都恢复了正常工作。

我必须重新安装一些 mythtv-* 软件包(尤其是 mythtv-database),并在升级删除 MySQL 后对其进行设置。幸运的是,所有数据都完好无损。在 MySQL 中,我必须启用网络并授予 mythconverg 数据库的权限。现在我可以从客户端成功连接到 MythTV 主后端服务器上的 MySQL,因此数据库连接正常。此外,我能够在主后端服务器上本地运行 MythTV 前端,因此我知道那里的 MythTV 堆栈正在运行。

但是,专用的 MythTV 前端以及我的标准 Ubuntu 工作站(未进行此升级)在尝试连接到主后端时都告诉我 MythTV 端口 6543 上的“连接被拒绝”。服务器端的系统日志中没有显示任何内容,并且 6543 正在使用中(“nc -lp 6543”失败)。UFW 防火墙在客户端和服务器(以及工作站)上处于非活动/禁用状态。升级之前这不是问题,因此极不可能是网络硬件造成的。

我不知道是什么阻碍了通往 MythTV 后端主服务器的流量。还有其他人有什么建议吗?

补充说明:在我修复 MySQL 访问之前,MythTV Frontend 最初要么在没有任何现有配置的情况下启动,要么直接崩溃。修复 MySQL 访问后,前端机器和我的工作站都以我在升级前为它们选择的独特 MythTV 主题启动。这似乎表明 MythTV Frontend 可以很好地连接到 SQL,只是端口 6543 上的 MythTV 后端流量似乎出现了故障。

2017-03-12 更新: 跑步netstat -4lnp |grep :6543回报:

tcp 0 0 127.0.0.1:6543 0.0.0.0:* LISTEN -

所以这让我认为端口绑定到了 127.0.0.1 地址,而不是我输入的实际服务器地址。即使服务器上的本地 Myth 前端指向完整的服务器地址,这也可以解释一些事情,但即使如此,我也不确定如何修复它。

答案1

允许远程机器上的 mythfrontend 访问第二台机器上运行的 mythbackend

如果 mythfrontend 没有与 mythbackend 在同一台机器上运行,则需要进行一些额外的配置才能允许远程访问 mythbackend。

mythbackend 主机上与 MYSQL 相关的两个独立问题可能正在起作用:

首先,确保在 mythbackend 主机上的 my.cnf 文件“/etc/mysql/my.cnf”中启用了网络。在此文件中,默认情况下存在以下内容(取决于版本),可防止远程 mythfrontend 访问 mythbackend 主机上数据库的信息。

skip-networking

或者

bind-address localhost

或者

bind-address 127.0.0.1

现在默认不再跳过网络,而是只监听本地主机,这样兼容性更高,安全性也更高。

因此,建议的解决方案是将“绑定地址”更改为机器的 LAN IP 地址 - 尽管这仅在 IP 地址是静态的而不是动态分配的情况下才有效。

笔记

如果使用bind-address,则只能配置使用1个IP地址。

#skip-networking

或者

#bind-address localhost

或者

#bind-address 127.0.0.1

或者

bind-address 192.168.3.4

笔记

最后一个示例中没有“#”

其次,可能需要更改 MythTV 数据库的权限表以允许前端访问 mythbackend(注意:mythfrontend 通过登录其 mysql 数据库与 mythbackend 进行通信 - 通常以用户 mythtv 的身份登录。在某些系统上,默认情况下,mysql 不允许另一台机器上的用户登录。以下授予任何机器上 id 为 mythtv 的用户访问 mythtv 数据库的权限)。

这可以通过在 mythbackend 机器上的命令行执行以下操作来完成(感谢挪威的 Torfinn Ingolfsen)。

笔记:

以下命令中的“passwd”应为 MythTV 配置中列出的密码,该密码也可在 ~/.mythtv/mysql.txt 中找到

默认情况下,mysql 数据库 root 用户没有密码,因此也应该通过保护默认 mysql 帐户来更改密码,请参阅:http://dev.mysql.com/doc/refman/5.1/en/default-privileges.html

mysql -u root -p mysql
mysql> grant all on mythconverg.* to 'mythtv'@'%' identified by 'passwd';
mysql> flush privileges;
mysql> exit;

答案2

原来 mythtv 后端服务在网络启动之前就启动了!启动后手动重启服务可以解决这个问题。(感谢彭内特

相关内容