我无法通过SSH
隧道设置复制,尽管在官方文档,文章和SO问题上花了很多时间。
我的主人是192.168.0.105
,奴隶是192.168.0.104
。我已经通过以下方式设置了SSH隧道:
ssh -L 3305:127.0.0.1:3306 tunneluser@192.168.0.105 -f -N
其中tunneluser
是主上的本地用户。
我在从站上得到以下输出(省略了不相关的行):
mysql> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
Slave_IO_State: Connecting to master
Master_Host: 127.0.0.1
Master_User: slave_user
Master_Port: 3305
...
Slave_IO_Running: Connecting
Slave_SQL_Running: Yes
...
Last_IO_Errno: 2003
Last_IO_Error: error connecting to master 'slave_user@127.0.0.1:3305' - retry-time: 10 retries: 1
...
1 row in set (0.00 sec)
令我困惑的部分是,如果我尝试:
mysql -h 127.0.0.1 -P 3305 -u slave_user -p
登录时没有任何问题。我开始认为这与权限有关,但我找不到任何暗示来证实我的理论。
我尝试将隧道设置为mysql
用户,但是,这种方式也不起作用。没错,但我不得不试一试。
有没有人对如何调试这个有什么建议?
如果我直接通过端口3306
,它的运行没有任何问题。
答案 0 :(得分:0)
好几天后,我在ServerFault上发现了一个类似的问题:
<强> MySQL Replication Over SSH - Last_IO_Errno: 2003 - error connecting to master 强>
事实证明SELinux
必须做到这一切!正如 @Tek Jau 所解释的那样,您可以通过semanage
添加此自定义端口来解决此问题:
sudo /usr/sbin/semanage port -a -t mysqld_port_t -p tcp 3305
希望这有助于任何偶然发现类似问题的人。