スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

Windows JavaアプリケーションからCentOSマシンのMySqlサーバへの接続エラー ~2.MySQL側の問題~

前回からの続きになりますが、Windows上のJavaアプリケーションからLinuxマシン上のMySQLサーバへ接続しようとした場合に発生した問題の、今回はMySQL側の問題についてとりあげます。

[前回の記事]
Linux OSをクライアントマシンとして使ってみる Windows JavaアプリケーションからCentOSマシンのMySqlサーバへの接続エラー ~1.CentOS側の問題~

2.MySQL側の問題

前回記事にも取り上げましたが、現状の状態で接続を試みると、以下のエラーが発生します。

- コンソール出力エラーコード2 -
ComDbUnit Init Error:java.sql.SQLException: null,  
message from server: "Host '×××.×××.×.××' is not allowed to connect to this MySQL server"

このエラーコードを解析しますと、
MySQLサーバへ接続するのにHost '×××.×××.×.××'は許可されていないということを訴えています。MySQLというデータベースをにわか知識で操る僕としましては、ネットで調査したところ、
外部からのアクセスには権限を与えてやる必要があるとのこと。
で、現状の権限がどうなっているか?はMySQLサーバが持つ”mysql”データベースが管理しています。
# mysqlshow

【実行結果1:root権限のデータベース一覧】
+--------------------+
| Databases |
+--------------------+
| information_schema |
| mysql |
| test |
+--------------------+

ということで、"mysql"データベースにログインします。
# mysql -u root mysql

ログインが完了したら、以下のSQLコードを実行してみてください。
mysql> SELECT Host, User, Select_priv, Insert_priv,Update_priv, Delete_priv FROM user;

実行結果2のように出力されるはずです。Host名にはlocalhostのみしか表示されておらず外部からのhostを受け付けるような設定にはなってないことがわかります。

【実行結果2:ユーザテーブルの確認】
+-----------------------+------+-------------+-------------+-------------+-------------+
| Host | User | Select_priv | Insert_priv | Update_priv | Delete_priv |
+-----------------------+------+-------------+-------------+-------------+-------------+
| localhost | root | Y | Y | Y | Y |
| localhost.localdomain | root | Y | Y | Y | Y |
| localhost.localdomain | | N | N | N | N |
| localhost | | N | N | N | N |
+-----------------------+------+-------------+-------------+-------------+-------------+

MySQLサーバのroot権限はこのままlocalhostのみからのアクセスに限定させておくとして、
新しくユーザを作成し、そのユーザでログインできるようにします。
以下のコマンドを実行すれば、developユーザが追加されます。
mysql>GRANT ALL PRIVILEGES ON *.* TO develop@"%" IDENTIFIED BY 'test';
mysql>flush privileges;


簡単に上記コマンドを説明します。

GRANT構文はユーザを登録するコマンドです。「develop」は追加するユーザ名です。

「*.*」としてるところがアクセス可能なデータベースおよび、テーブルになりますが、ワイルドカードで*.*としているので、全データベース全テーブルがアクセス対象となります。

アットマークの後ろにある"%"は許可するホスト名です。IPアドレス等でも可です。"%"もワイルドカードで、すべてのhostを受け付けるというちょっと危険な設定です。IPアドレスやホスト名で限定することが望ましいです。

最後の'test'はパスワードになります。

そして、GRANT構文を反映させるために、「flush privileges」というコマンドを実行しています。
では、再び以下のSQLコマンドで追加されていることを確認します。
mysql> SELECT Host, User, Select_priv, Insert_priv,Update_priv, Delete_priv FROM user;

確認できたら、Javaアプリケーションから今回追加したユーザでログインできるように設定し、実行すると見事接続が完了しました。 このエントリーをはてなブックマークに追加

コメントの投稿

非公開コメント

プロフィール

白鯖

Author:白鯖
安い寄せ集めの部品で構築し、CentOS5をインストールしました。主に、Webサーバ、アプリケーションサーバとして運用中。ハードの知識はあまり無いプログラマですが、全部自前で作るのは、手間はかかるけど、レン鯖より面白いです。

ハードウェア構成

カテゴリー
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
Max TDP控え目なCPU
安くて静音なクーラー
検索フォーム
ユーザータグ
RSSフィード
はてな
スポンサード リンク
おすすめ書籍
twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。