web-dev-qa-db-ja.com

mysqlへのjdbc接続を許可するようにローカルサーバーを構成するにはどうすればよいですか?

私は小さなJavaアプリケーションを持っています。現在、mysqlで動作させようとしています。VMwareWorkstationとUbuntu Server10.10を実行しています。接続しようとするとサーバー(VMwareが実行されているPCから)にmysqlドライバーのJDBC接続を開始するために、それは機能しません。私は以前にSOで同様の質問をしました。最初で唯一回答(現時点では)ファイアウォールまたは接続タイプが問題である可能性がありますが、正しく構成する方法がわかりません。

多分誰かがこの部分を手伝ってくれるでしょうか?

また、アプリケーションから*.jarファイルを作成しようとしましたが、リンクにlocalhostを配置し、サーバー上で正常に動作するため、接続中にいくつかの制限があることが再度証明されたと思います。

1
Eugene

私の推測では、bind-address

Mysqlのデフォルトポートは3306です。netstat -tanlp | grep LISTEN | grep 3306を使用してすべてのインターフェースでリッスンしているかどうかを確認してください。

tcp        0      0 0.0.0.0:3306  0.0.0.0:*  LISTEN      mysqld

それが127.0.0.1:3306と表示されている場合、mysqlはローカルホストでのみリッスンしています。その場合は、mysqlのmy.cnfbind-address設定を変更してください。

bind-address    = 10.0.0.1

または

bind-address = 0.0.0.0 

すべてのインターフェイスでリッスンします。

更新:これで、ポート3306に接続できるようになりました。エラーメッセージ:

Host 'vm_ip' is not allowed to connect to this MySQL server

邪魔になるファイアウォール/ iptablesがないことを意味します。メッセージはMySQL自体から来ています。 「ユーザー」が「ホスト」からデータベースに接続できるようにするには、適切な「許可」を行う必要があります。セキュリティの観点から、ここで何を有効にするかについては非常に注意する必要があります。ヘルプについては、次のURLを参照してください。

http://dev.mysql.com/doc/refman/5.5/en/access-denied.html

すべての人にすべてのタイプのリンクを付与しているサイトはたくさんあります。これらから使用するものには十分注意してください。ユーザーが読み取り専用アクセスを必要とする場合は、次のようなものから始めることができます。

GRANT select ON mydatabase.* to myusername@'192.168.1.1' IDENTIFIED BY 'mypasssword';

「GRANTall」タイプのコマンドを実行するだけでは十分に注意してください。

2
davey