特集
» 2005年08月22日 12時46分 公開

MySQLデータベースとBaseを接続する(その2)(2/2 ページ)

[鎌滝雅久,UNIX USER]
前のページへ 1|2       

JDBCドライバのインストール

 OOoからMySQLを操作するために、冒頭で述べたようにJDBCドライバを利用します。MySQLのJDBCドライバMySQL Connector/J3.1は、次のURLで配布されています。

http://dev.mysql.com/downloads/connector/j/3.1.html

 2005年4月20日現在、バージョン3.1.8(mysql-connector-java-3.1.8.zip)が最新版となっています。圧縮ファイル内にはソースも含まれているため、展開するとかなりの数のファイルが現れますが、必要なのはmysql-connector-java-3.1.8/mysql-connector-java-3.1.8-bin.jarだけです。インストールは、同ファイルをJREのあるパス以下のlib/extディレクトリか、任意のディレクトリにコピーします。

 ただ、JREをアップデートした場合パスが変わることがあるため、この点を考慮してJDBCドライバをインストールするディレクトリは、JREのパス以外にすることをお勧めします。ここでは例として、ホームディレクトリにデータベース格納のためのDatabaseディレクトリを作り、さらにその下にdriverディレクトリを作ることにします。具体的には、実行例6のように実行すれば、MySQLのJDBCドライバがインストールされます。

実行例6 JDBCドライバをホームディレクトリ内にインストール
$ unzip mysql-connector-java-3.1.8.zip
$ cp mysql-connector-java-3.1.8/mysql-connector-java-3.1.7-bin.jar ~/Database/driver

MySQLをBaseに登録

 JDBCドライバを任意のディレクトリにインストールした場合は、OOo側で設定が必要です。JREのパス以下のlib/extディレクトリにインストールした場合は、この作業は必要ありません。

 また、Baseへの設定後、OOoの再起動が必要なので、BaseにMySQLを登録する前に実行しておきます。

 OOoの[ツール]−[オプション]で「オプション」ダイアログを表示し、[OpenOffice.org]−[Java]を選びます。[クラスパス]ボタンをクリックして表示される「クラスパス」ダイアログの[アーカイブを追加]ボタンを使って、図1のようにDatabase/driver/mysql-connector-java-3.1.8-bin.jarを登録します。「クラスパス」ダイアログの[OK]ボタンをクリック後、「オプション」を[OK]ボタンで更新し、OOoを再起動してください。これで、BaseにMySQLを登録する事前準備はすべて整いました。

図1 図1 Javaの設定にクラスパスを追加する

ウィザードでMySQLのデータベースを登録

 HSQLDBとは違い、新規に任意のDBMSを登録する場合は、そのDBMSサーバーにデータベースが存在している必要があります。MySQLには、先に紹介したようにテスト用のtestというデータベースがあるので、これを利用することにしましょう。HSQLDBのときと同じように、登録はウィザードを利用します。

 OOoのメニューで、[ファイル]−[新規作成]−[データベース]を選びます。データベースウィザードが起動するので、ステップ1の「データベースの選択」で「既存のデータベースに接続」をチェックし、データベースの種類に「MySQL」を選びます。図2のように、ステップ2以降がMySQL用の設定に変わるので、[次へ]ボタンをクリックします。ステップ2の「MySQL 接続のセットアップ」では、「JDBC(Java Database Connectivity)を使って接続」をチェックし、[次へ]ボタンをクリックします(図3)

図2 図2 MySQLを選ぶとステップ2以降の設定メニューが変わる
図3 図3 MySQL接続にJDBCを使う

 ステップ3の「JDBC 接続のセットアップ」では、「Name of the database」欄に「test」、「Server URL」欄に「localhost」を入力します(図4)。残りの「Port number」、「MySQL JDBC ドライバクラス」各欄はデフォルトのままで構いません。また、[Test class]ボタンをクリックし、JDBCドライバとの接続テストを行っておきましょう。エラーが表示されなければ、ドライバの設定に問題はありません。[次へ]ボタンをクリックします。

図4 図4 testデータベースへ接続するサーバー情報を設定する

 ステップ4の「ユーザー認証のセットアップ」では、「ユーザー名」欄に「open」を入力し、「Password required」をチェックします(図5)。ここでも[Test Connection]ボタンをクリックし、openユーザーのパスワードで接続テストを行っておきましょう。エラーが表示されなければ、MySQL側の設定に問題はありません。[次へ]ボタンをクリックします。ステップ5の「保存して続行」は、データベース登録後の作業を選ぶ個所ですが、デフォルトのままで構わないので、そのまま[完了]ボタンをクリックします(図6)

図5 図5 testデータベースへ接続するユーザー情報を設定する
図6 図6 データベース登録後の作業を選ぶ

 図7の「名前を付けて保存」ダイアログが表示されたら、保存先にDatabaseディレクトリを指定し、データベースの名前を指定して[保存]ボタンをクリックします。ここでは、データベースファイル名を「MySQL」としています。

図7 図7 データベースに名前を付けて保存する

 最後に、図8のように「MySQL」というBaseの画面が表示されたら、MySQLのtestデータベースの登録は終了です。

図8 図8 MySQLのtestデータベースが登録された

エラーが表示された場合は?

 エラーが表示され、MySQLのデータベースとの接続が確立できない場合は、MySQL、OOo、さらにOSのシステムなどの設定が絡んできます。なかなか複雑なので、どの部分に問題があるのか見極めなければいけません。本原稿のために検証したDebianの環境でもエラーが表示され、OOoとMySQLが接続できないケースがありました。このトラブルへの対処をコラム1にまとめましたので、参考にしてください。

コラム1 Base登録時のトラブル対策

 筆者の環境では、MySQLのTCP/IP接続を確認する際、リストAのようなエラーが表示されました。リストAの内容は、「"localhost.localdomain"というホストからの接続は許可されていません」というものです。確かにmysqlデータベースのuserテーブルのホストフィールドには、このホスト名のエントリはありません。この問題は、/etc/hostsファイルから「localhost.localdomain」のエントリを削除することで対応できます。

 また、MySQLのTCP/IP接続を確認せずにBaseにMySQLを登録すると、データベースウィザードのステップ4「ユーザー認証のセットアップ」で[Test connection]ボタンをクリックした際に、テストに失敗します。ウィザードのエラーから、その原因を特定することはおそらく難しいでしょう。

 このことから、MySQLのTCP/IP接続の確認は重要ですし、Linuxのホスト名がどのような方法で設定されているのか、というシステム管理に関する知識が必要な場合もあります。

 OOoとデータベースの接続でうまくいかない場合は、ケース・バイ・ケースでなかなか解決が難しいのですが、原因がデータベースやシステムの設定にある場合が多く、もう1度見過ごしがないかチェックすることは必要です。設定修正後それを反映するには、「/etc/init.d/mysql restart」と実行して、MySQLサーバーを再起動してください。

リストA MySQLのTCP/IP接続エラー
$ mysql -u open -h debian -p
Enter password:
ERROR 1130: Host 'localhost.localdomain' is not allowed to connect to this MySQL server


次回(8月25日公開予定)はBaseでMySQLのテーブルを作成してみよう。

UNIX USER 9月号表紙 最新号:UNIX USER 9月号の内容

第1特集
俺のサーバー、白か玄

第2特集
セキュアを極めるLDAPサービス認証統合−後編

[特別企画]
・Qt 4リリース! 導入された5つの新機能
[短期集中連載]
・仮想マシンモニター Xen 3.0の全貌


前のページへ 1|2       

Copyright(C) 2010 SOFTBANK Creative Inc. All Right Reserved.

注目のテーマ