本地主机上有 2 个不同的 mysql 服务器

本地主机上有 2 个不同的 mysql 服务器

我正在尝试构建使用 2 个 mysql 服务器的应用程序。我设置了端口转发(这是调用它的名称 - 我不知道),如下所示:

sudo ssh -g -L3306:foreignserver.ip:3306 [email protected]

我将自己的 my.cnf 端口改为 3360,然后

sudo service mysql restart

当我尝试连接到外国服务器时,失败了。

mysql --host=localhost --port=3306 --user=userinforeignsystem --password=pwdthere

给了我错误

ERROR 1045 (28000): Access denied for user 'userinforeignsystem'@'localhost' (using password: YES)

由于我无法从外部连接到其他服务器的 mysql 数据库,因此 ssh/端口转发是我进行开发的唯一方式。数据库用户权限和用户名/密码经过双重检查并且正确无误。我可以使用这些凭据在其他服务器上顺利登录。

艾伦。

编辑:如果我将用户名和密码替换为我自己的 mysql 用户名和密码并保留端口 3306,它会以某种方式连接到我自己的计算机 mysql - 我可以选择数据库并查看我自己的 mysql db 的表而不是 foreignserver.ip 内容。看起来它要么不关注端口,要么端口转发有问题,或者其他什么...

编辑2:

经过谷歌搜索后我找到了命令

sudo netstat -plntu

并使用它。当我删除不包括端口 3360 和 3306 的行时,只剩下那 2 行:

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      8145/mysqld     
tcp6       0      0 :::3306                 :::*                    LISTEN      8080/ssh  

这是否意味着,由于某种原因,尽管有 my.cnf,我的 mysql 却没有在 3360 上运行?

编辑3:localhost/phpmyadmin 变量也显示端口 3306 正在使用中..猜测这就是问题所在...

编辑4:同时 mysqladmin 变量命令显示端口为 3360。现在我没有主意了。

edit5:仔细检查my.cnf并发现设置端口的其他地方:

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:3360            0.0.0.0:*               LISTEN      -               
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      -               
tcp6       0      0 :::3306                 :::*                    LISTEN      -               

现在 phpmyadmin 显示端口 3360 也已被使用。但是 shell 中的 mysql 命令仍然无法连接。

EDIT6 - 已解决。出于某种原因

mysql --host=localhost --port=3306 --user=userinforeignsystem --password=pwdthere

没有起作用,而

mysql --host=127.0.0.1 --port=3306 --user=userinforeignsystem --password=pwdthere

有效。如果有人能向我解释这一点,那么你就会教我一些有趣和新的东西:)

答案1

看起来你做的一切都是正确的,只是你尝试使用的用户没有从本地主机连接的权限。

SSH 隧道将使用端点掩盖您的 IP,在本例中它是本地主机,您可以通过多种方式解决这个问题。

  • 尝试结束与同一网络中的另一台服务器的隧道,然后您将显示为从该服务器连接

    sudo ssh -g -L3306:foreignserver.ip:3306[电子邮件保护]

  • 为 localhost 用户添加权限,为 '%' 添加权限永远不会授予 localhost 权限

让我知道事情的后续!

相关内容