HaneCa

独り立ちへ向けた長い道

MySQLサーバにJavaでアクセス

投稿日: 2010年5月8日 最終更新日: 2020年4月12日

MySQLサーバに外部のサーバ(クライアント)からJavaでアクセスする方法

Javaのライブラリには、MySQLが公式に提供しているMySQL Connector/Jを利用
ダウンロードはここから
現在の最新版のバージョンは5.1.12

ダウンロードした圧縮ファイルを解凍し、中に含まれるJARファイル(mysql-connector-java-5.1.12-bin.jar)をCLASS_PATHが通ったディレクトリにコピーする

ソースコードは、ダウンロードしたライブラリに含まれるマニュアルをそのまま利用すれば、簡単に作成することができる

今回、問題になったのは、外部のMySQLサーバへアクセスする時に、接続が拒否されることであったが、以下の2段階のアプローチで解決した

1.MySQLサーバは、Ubuntu 10.04上で動作しており、最初はUbuntuのポート開放の設定を変更したが、解決しなかった(以下は試みた手順メモ)
外部のサーバから、nmapコマンドを用いて、Javaでアクセスしようとしたクライアントから、MySQLサーバが動作するUbuntuのポート開放をチェックしたところ、80番のみが開放されており、MySQLサーバがデフォルトで利用する3306番は開放されていなかった
# sudo nmap -sTV(TCPをチェック) 192.168.1.10(MySQLサーバアドレス) -p 21-100(チェックするポートの範囲(この場合21番から100番をチェック))

nmapのレスポンスは、ポート番号と状態、サービス名が返され、80番は状態がopen、サービス名がapacheだった
しかし、3306番は状態がclosedだった

そのため、ufwを用いて手動でポートの開放を設定するようにした
ufwを有効にする
# sudo ufw enable
開放するポート番号を設定する(TCPとUDPは別々に設定しなければならない)
# sudo ufw allow 3306/tcp

しかし、この方法では接続できるようにならなかった

2.MySQLサーバの設定ファイルの変更
MySQLサーバの設定ファイル(/etc/mysql/my.cnf)にあるbind-addressを無効にすることで、解決した
bind-address = 127.0.0.1 -> #bind-address = 127.0.0.1

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください