この記事の内容
3.2アクセス許可の問題(最初にファイアウォールの問題を確認できます)
I.はじめに
最近、新しいAliyunサーバーCentos7.xを購入しました。MySQLをインストールした後、Xshellを介してサーバー上のMySQLにアクセスできますが、Navicatなどのリモート接続ツールを使用すると、2003年にエラーが発生します-MySQLサーバーに接続できません。 '8.131 .154.146'(10060 "不明なエラー")、しかしそれは午後全体の後に解決されました。長い間検索した後、それはまだファイアウォールの問題でした。このブログの目的は明確なメッセージを指摘することですまだ混乱している学生たちへ。いくつかの穴を迂回して道路。
第二に、エラーの理由
私が要約した理由は次のとおりです:(1)ネットワークの問題、(2)アクセス許可の問題、(3)ファイアウォールの問題(iptables)、(4)サーバーポートのアクセス許可、および(5)不正なポート番号。問題を次々とトラブルシューティングしていたのですが、ついに城壁のせいで接続できなくなりました。
三、解決策
3.1ネットワークの問題
次の図に示すように、サーバー上のMySQLデータベースに接続するためのユーザー名とパスワードを入力します。ネットワークに問題がないことを証明し、これを除外します。
3.2アクセス許可の問題(最初にファイアウォールの問題を確認できます)
MySQLにログインし、アカウントでリモート接続が許可されているかどうかを確認します。接続できない場合は、次の方法を試すことができます。
// MySQLにログインします。次のコマンドでは大文字と小文字は区別されません
コマンド:mysql> mysql -u root -p
//任意のリモートホストがデータベースにアクセスできます
コマンド:mysql> GRANT ALL PRIVILEGES ON *。* TO'root '@'% 'WITH GRANT OPTION;
//変更を有効にするには、マイナーコマンドを入力する必要があります
コマンド:mysql> FLUSH PRIVILEGES;
次の図に示すように、承認が実行された後(つまり、上記の2番目のコマンドの後、エラー1133(42000):ユーザーテーブルに一致する行が見つかりません)が報告される場合があります。
このエラーを報告した後、flush特権 コマンドを実行した後、成功するか(幸運なことに、次の手順に進むことができます)、成功しない可能性があります。その後、ユーザーユーザーのホスト属性を変更する必要があります。次に、フラッシュ特権を実行します。このコマンドで実行できます。
3.3ファイアウォールの問題
多くの場合、liunxシステムにWebサービスアプリケーション(tomcat、apacheなど)をインストールした後、他のコンピューターがアプリケーションとLinuxシステムのファイアウォール(centos-7、redhat)にアクセスできるようにする必要があります。など)は、デフォルトでは外部にのみ開かれています。ポートは、mysqlのポート3306を開かない場合があります。
centOsホストのポート設定は、/ etc / sysconfig / iptablesファイルで構成されます。(viエディターの使用法:esc:コマンドラインモード/挿入モード; i:挿入、wq:保存して終了、q:終了、q!:保存せずに終了)
入れNEW -m tcpの-p TCP --dport 3306 -j --stateの-A INPUT -m状態をACCEPTにランダムに配置していないポート22.下。これは、MySQLのリモート接続用のポートを開き、再起動のiptablesます。サービスは大丈夫です。
特記事項:多くのネチズンは、ファイアウォール構成の最後の行にこれら2つのルールを追加しているため、ファイアウォールの起動に失敗します。デフォルトのポート22ルールに正しいルールを追加する必要があります。
#80デフォルトポート#3306 MySQLデフォルトポート#8080Tomcatデフォルトポート
#system-config-firewallによって作成されたファイアウォール構成
#このファイルを手動でカスタマイズすることはお勧めしません。
*フィルタ
:INPUT [0:0] ACCEPT
:FORWARD [0:0] ACCEPT
:OUTPUT [0:0] ACCEPT
-A INPUT -m状態-state ESTABLISHED、関連ACCEPT -j
-A入力が-p ICMP -j ACCEPT
- A INPUT -i lo -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-禁止された
COMMIT
/etc/init.d/iptables restart
#最後にファイアウォールを再起動して、構成を有効にします。再起動に失敗した場合(iptables.serviceの開始に失敗しました:ユニットが見つかりません。)、他のブログを確認できます:[Linux環境] centos7 iptables.serviceの開始に失敗しました:ユニットではありませんファイアウォールが見つかりました
3.4 サーバーポートのアクセス許可
まず、AliまたはTencentサーバーコンソールでポート3306のアクセス許可が有効になっているかどうかを確認します。場所については、Baiduで確認してください。私のものは次のとおりです。
以下は手動で追加した後のものです。下の画像を参照してください。
3.5 ポート番号が正しくありません
このため、解決がはるかに簡単です。ポート番号を注意深く確認することで解決できるので、繰り返しません。
結びの言葉:私はピットを踏んでいる学生を助けたいと思っています。
終わり!