web-dev-qa-db-ja.com

外部ホスト/ IPからmysqlデータベースにアクセスしますか? (例:mysqlワークベンチ)

X.x.x.xで実行されているmysqlサーバーがあり、内部的に問題なくアクセスできます(もちろん)。ただし、外部に接続しようとすると、つまりmysqlワークベンチを使用して、または外部サーバーからでも、「ホスト 'bla.bla.bla'はこのMySQLサーバーに接続できません」というエラーメッセージが表示されます。

私はやった:

  • GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY "somepass";
  • そして、iptablesでポート3306を開きました。

私が見逃している別の基本的なセキュリティ問題はありますか?

9
Jon

あなたがする必要があります

GRANT ALL PRIVILEGES ON *.* TO mysql@'bla.bla.bla' ...

@の後の部分は接続元のホストであるため、ローカルホストからの接続のみを許可しています。必要な各リモートホスト(またはすべてのホスト-... mysql@'%' ...-該当する場合)からのアクセスを許可する必要があります。

14
nobody

これを解決するには、次のコマンドを実行する必要がありました。

mysql -u root -p
[enter in your password]
CREATE USER 'mysqluser'@'%' IDENTIFIED BY 'aC0MPL3XPa33W0RD';
GRANT ALL PRIVILEGES ON *.* TO 'mysqluser'@'%' WITH GRANT OPTION;
8
Ahmad

私はまったく同じような状況にありました。私のMYSQLはcentOSにインストールされています。ニルヴァーナへの道は以下の通りです。

  1. bind-address:DID機能しません
  2. 許可を与える:DID機能しない
  3. オフの場合のiptables:DID動作します。

解決策:iptablesに釣りに行き、次の変更を加えました:

  1. 次のコマンドを使用してiptablesにアクセスします:vim/etc/sysconfig/iptables
  2. 以下のステートメントを見つけた場合は、行の先頭に「#」を追加してコメントを付けてください。

    -A INPUT -s 123.123.123.123/32 -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

    -A INPUT -j REJECT --reject-with icmp-Host-prohibited

    -A OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT

  3. 次のコマンドを使用してiptablesを再起動します。serviceiptablesrestart

うん、それは私のために働いた。それが誰かに役立つことを願っています。

4
Yoosaf Abdulla

サーバーを取得したとき、MySQLクライアントアプリケーションからmysqlにアクセスするときに同じ問題が発生した場合でも、次のクエリを使用してMysql権限を付与しました。

それはうまくいきました

**GRANT ALL PRIVILEGES ON db_base.* TO db_user @'%' IDENTIFIED BY 'db_passwd';** 

db_base is the database Name
db_user is database User
db_passwd is the database password 

これを実行したら、次のコマンドでフラッシュしますFLUSH PRIVILEGES;

データベース内の特定のテーブルにアクセスするための特権を付与しようとしている場合は、次のコマンドを使用できます。

GRANT ALL PRIVILEGES ON db_base.HELLOWORLD TO db_user @'%' IDENTIFIED BY 'db_passwd';

ここで、HELLOWORLDはテーブル名です

3
gmhk

このbind-addressthingの背後にあるセキュリティの詳細はわかりません。仮想ボックスマシンにDebianサーバーをインストールして学習するだけです。このゲストは仮想ネットワークカードをブリッジとして設定しているので、家の残りの部分がそれを見ることができます。そのIPは192.168.1.4です。別のコンピューター(192.168.1.3)から、bind-address = 127.0.0.1で接続に失敗しました。 bind-address = 192.168.1.4の設定は正常に機能します。 (それ自身のアドレス、文字通り)それは仮想構成内の127.0.0.1の解釈でなければなりません、確かではありません...

0
oli

ユーザーmysqlとして接続していますか? GRANTクエリを次のように実行してみてください:GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY "somepass";

0
jesse reiss

Mysqlワークベンチが適切なユーザー名を使用して接続を試みていることを確認しましたか?付与コマンドを実行した後、 特権をフラッシュしました しましたか?

0
eykanal