8

Linux Mintを実行していて、この方法でmySQLに接続しようとしています

mysql --port=3306 -u root -p

次に、パスワードの入力を求められます。これはすべて問題ありません。このようなものを入力しても機能するのはなぜですか。

mysql --port=1234 -u root -p

ポート1234で実行されているmySQLサーバーがないため、失敗しないはずですか?

これを尋ねる理由は、別のサーバー上のデータベースに接続するためのSSHトンネルを作成したいからです。SSHトンネルがすべてのトラフィックをlocalhost:3308からmyremoteserver:3306に転送するとします。ローカルのmySQLサーバーがすべてのポートで接続を受け入れているため、実際にポート3308に接続してリモートサーバーにアクセスすることはできません。私はまだローカルサーバーにアクセスしています...

SSHトンネルオプションが間違っていたとしても、ポート1234に接続できる理由を誰かが知っているのに、3306で実行されているローカルのmySQLサーバーにヒットするのではないかと考えていました。

4

4 に答える 4

11

TCP 接続を強制するには、--protocol=TCP.

例:

まず SSH トンネル

ssh -L 4000:localhost:3306 server.ch

次に、リモートmysqlサーバーに接続します

mysql -h localhost --port=4000 --protocol=TCP -u root -p
于 2012-09-27T16:23:05.460 に答える
10

localhost に接続している場合、IIRC mysql は Unix ソケットに接続します。この場合、TCP 経由で接続しないため、関係するポートはなく、指定したポート番号は重要ではありません。

編集:これがすべてのシステムに当てはまるかどうかはわかりませんが、localhost の代わりに 127.0.0.1 またはホスト名を使用すると、mysql は TCP 経由で接続し、ポート番号は問題になります。正しいポート番号でのみ接続できます。

于 2010-12-09T08:59:27.370 に答える
1

接続を試みるに、パスワードを要求されます。パスワード (またはその他のパスワード) を入力して続行すると、次のような応答が返されます。

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock'
于 2010-12-09T07:51:53.870 に答える
1

@titanoboa、これはthxです!私は同じ問題を抱えていました。追加するだけで、次を使用してローカルホストに対しても実際にTCP接続を強制できます

[client]
port = 3306 
socket = /var/run/mysqld/mysqld.sock 
protocol = TCP

乾杯

于 2014-06-23T05:18:37.540 に答える