37

この質問は、次の質問に関連しています。

ローカルマシンで新しいMySQL(5.1)サーバーを構成しています。データベースへのリモートアクセスを提供する必要があります。私は次の手順を実行しました。

  1. bind-addressmy.cnfのコメント:

    # bind-address      = 192.168.1.3
    
  2. 権限を付与する:

    GRANT ALL PRIVILEGES ON *.* TO 'nickruiz'@'%' IDENTIFIED BY PASSWORD 'xxxx';
    
  3. ルーターのポート転送を設定します(TCPおよびUDP、ポート3306、192.168.1.3)
  4. ファイアウォールのiptablesを構成する

    sudo iptables -I INPUT -p udp --dport 3306 -j ACCEPT
    
    sudo iptables -I INPUT -p tcp --dport 3306 --syn -j ACCEPT
    
    sudo iptables-save
    
  5. mysqlサーバーを再起動しますsudo /etc/init.d/mysql restart

テストすると、次のようになります。

LAN:

mysql -h 192.168.1.3 -u nickruiz -p
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 95
Server version: 5.1.63-0ubuntu0.11.04.1 (Ubuntu)

リモート:

mysql -h 1xx.xx.4.136 -u nickruiz -p
ERROR 2003 (HY000): Can't connect to MySQL server on '1xx.xx.4.136' (111)

明らかに、自分のグローバルIPアドレスを使用できないという問題があります。

ノート:

  • 同じマシンで、またリモートマシンからSSH経由でリモート接続をテストしてみました。
  • ISPから静的IPが提供されているかどうかはわかりません。

何か案は?

更新:telnetが機能していないようです。

telnet 192.168.1.3 3306
Trying 192.168.1.3...
Connected to 192.168.1.3.
Escape character is '^]'.
E
5.1.63-0ubuntu0.11.04.1,0g8!:@pX;]DyY0#\)SIConnection closed by foreign host.
4

11 に答える 11

6

errno 111 は ECONNREFUSED です。ルーターの DNAT に問題があると思われます。

また、ISP がそのポートをフィルタリングしている可能性もあります。

于 2012-08-01T12:00:56.740 に答える
4

リモート ホスト (つまり、接続しようとしている Web ホスティング サーバー) がポート 3306 で OUTGOING トラフィックを許可していることを確認します。

この状況で (100) エラーが発生しました。PC/Mac からは接続できましたが、Web サイトからは接続できませんでした。MySQL インスタンスにはインターネット経由でアクセスできましたが、私のホスティング会社は、私の Web サイトがポート 3306 でデータベースに接続することを許可していませんでした。

ホスティング会社に、ポート 3306 での送信トラフィックまで Web ホスティング アカウントを開くように依頼すると、Web サイトはリモート データベースに接続できました。

于 2013-02-04T15:53:25.933 に答える
3
/etc/mysql$ sudo nano my.cnf

私のために働く関連部分:

#skip-networking
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = MY_IP

MY_IPifconfigまたはを使用して見つけることができますcurl -L whatismyip.org |grep blue

mysql を再起動して、新しい構成がロードされていることを確認します。

/etc/mysql$ sudo service mysql restart
于 2015-11-12T15:24:22.730 に答える
0

私はあなたと同じ質問をしています.wiresharkを使用して送信したTCPパケットをキャプチャします.binを使用mysqlしてリモートホストに接続すると、リモートの3307ポートに接続することがわかりました.3307/etc/mysql/my.cnfは別のプロジェクトのmysqlポートですが、my.cnf[client] 部分の設定を変更し、-Pオプションで 3306 ポートを指定すればOKです。

于 2015-12-24T05:23:03.893 に答える
0

使用するシステムが CentOS/RedHat で、rpm を使用して MySQL をインストールする場合、/etc/ フォルダーに my.cnf がない場合は、次を使用できます。 #whereis mysql #cd /usr/share/mysql/ cp -f /usr/share/mysql/my-medium.cnf /etc/my.cnf

于 2014-06-16T07:47:59.890 に答える
-1

あなたが言及した手順でそれを見ることができないのでわかりません。

FLUSH PRIVILEGESを試してください[mysql データベースの付与テーブルから権限を再読み込みします]:

特権をフラッシュします。

GRANTの後に実行する必要があります

この助けを願っています!

于 2012-08-01T12:17:13.093 に答える