我正在运行Linux Mint并尝试以这种方式连接到mySQL
mysql --port=3306 -u root -p
然后它会提示我input密码。 这一切都很好。 为什么当我input这样的东西时,它仍然有效…
mysql --port=1234 -u root -p
如果不是因为在端口1234上没有运行mySQL服务器而失败?
我问这是因为我想创build一个SSH隧道连接到另一台服务器上的数据库。 假设SSH隧道将所有的stream量从localhost:3308转发到myremoteserver:3306。 由于我的本地mySQL服务器正在接受所有端口上的连接,所以我实际上无法连接到端口3308并点击远程服务器。 我仍然打我的本地服务器….
即使我的SSH隧道选项可能是错的,我想知道是否有人知道我为什么可以连接到端口1234,它仍然打在我的本地mySQL服务器上运行3306?
如果您连接到本地主机,IIRC mysql会将您连接到Unix套接字。 由于在这种情况下它不通过TCP连接,所以没有涉及的端口,您给的端口号无关紧要。
编辑:不知道是否所有的系统都是如此,但如果我使用127.0.0.1或主机名而不是本地主机,mysql通过TCP连接,端口号很重要 – 我只能连接正确的端口号。
要强制使用TCP连接,请使用--protocol=TCP
。
例:
首先是SSH隧道
ssh -L 4000:localhost:3306 server.ch
然后连接到远程mysql服务器
mysql -h localhost --port=4000 --protocol=TCP -u root -p
在尝试连接之前 ,它会询问你的密码。 如果你输入你的密码(或其他任何东西),让它继续下去,它会回应如下:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock'
@titanoboa,thx为此! 我有同样的问题。 只是添加你可以实际上强制TCP连接,即使是本地主机使用以下
[client] port = 3306 socket = /var/run/mysqld/mysqld.sock protocol = TCP
干杯