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

MySQLをBaseに登録し、OpenOffice.orgと連携させながら業務アプリケーションとして活用するための基礎知識学ぶ同特集。今回は、MySQLの設定を行うとともに、MySQLをBaseに登録するまでを解説する。

» 2005年08月29日 00時00分 公開
[鎌滝雅久,UNIX USER]

UNIX USER2005年6月号第1特集「OpenOffice.org2.0ではじめるDB」Part3より転載

MySQLの設定

 MySQLの設定は多岐にわたりますが、Debianでは、同じシステム上のOOoとの接続だけなら、さほど難しくはありません。セキュリティ関連設定も基本的には厳しいものになっているのですが、最小限の設定として、セキュリティ強化とアクセスの制限、データベースで日本語を利用できるようにしておきましょう。また、MySQLとOOoとのTCP/IP接続を許可する設定も加えます。

セキュリティ強化とアクセスの制限

 まずは、MySQLのデフォルトの設定を確認しておきましょう。ここでは、「-u」オプションを使ってrootユーザー*でアクセスしてみます(実行例2)

実行例2 MySQLのrootユーザーでuserテーブルを表示
mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10 to server version: 4.0.22-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> select Host,User,Password from mysql.user;
                     ↑userテーブルのフィールドを表示
+-----------+------------------+------------------+
| Host      | User             | Password         |
+-----------+------------------+------------------+
| localhost | root             |                  |
| debian    | root             |                  |
| localhost |                  |                  |
| debian    |                  |                  |
| localhost | debian-sys-maint | 00876b237629d823 |
+-----------+------------------+------------------+
5 rows in set (0.03 sec)

mysql> quit

 実行例2は、MySQLサーバーのmysqlというデータベースに作成されているuserテーブルを表示しています。このuserテーブルが、実はアクセスの制御に関する設定を行う重要なテーブルなのです。また、このmysqlデータベースは、デフォルトの設定のままだとrootユーザーを指定しないとアクセスできません。

 次に、Hostフィールドを見てください。「debian」というのはlocalhostに付けられたホスト名なので、MySQLサーバーには、起動したPCからしかアクセスできないことを示しています。ただし、データがブランクのフィールドは、アクセス制御されていないことを意味します。したがって、デフォルトの設定では、アクセス制御という重要なデータベースを持つmysqlデータベースについて、次のような状態になっていることが分かります。

  • 同じPC上のユーザーならアクセスできる
  • (MySQLの)rootユーザーのパスワードが設定されていない

 最小限のセキュリティとして、まずはrootユーザーのパスワード設定を次のように行います。

mysqladmin -u root password root_password
                ↑パスワードを入力
exit

 次に、ブランクユーザーを削除し、データベースにアクセスできるユーザーopenを作成したうえで、そのパスワードを設定しましょう(実行例3)

実行例3 新しいユーザーの作成とパスワード設定
mysql -u root -p
Enter password:        ←rootパスワードを入力
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13 to server version: 4.0.22-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> use mysql;      ←mysqlデータベースの選択
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> delete from user where user='';
                     ↑ブランクユーザーを削除
Query OK, 2 rows affected (0.01 sec)

mysql> grant all privileges on *.* to 'open'@'localhost'
                     ↑新ユーザーを追加
    -> identified by 'open_password' with grant option;
                     ↑パスワードを設定
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
          ↑ユーザー設定を反映するように明示的に指示し実行させる
Query OK, 0 rows affected (0.10 sec)

 実行例3の設定を終えたら、userテーブルのアクセス制御の設定を確認します。実行例4のように、User、Passwordの各フィールドに値が設定されていることをチェックしてください。実行例4では、Hostフィールド「debian」であるレコードのパスワードが設定されていませんが、実際にアクセスする際には(localhostで設定した)rootパスワードを要求されます。

実行例4 userテーブルのアクセス制御設定を確認
mysql> select Host,User,Password from user;
+-----------+------------------+------------------+
| Host      | User             | Password         |
+-----------+------------------+------------------+
| localhost | root             | 6cced996277d6859 |
| debian    | root             |                  |
| localhost | open             | 37f42f5e360ee365 |
| localhost | debian-sys-maint | 00876b237629d823 |
+-----------+------------------+------------------+
4 rows in set (0.01 sec)

MySQLデータベースの日本語設定

 MySQLは、設定ファイルに文字コードのエントリを追加すると、フィールド名およびデータに日本語を利用できます。扱える文字コードは、EUC-JP、シフトJISです(バージョン4.1以降はUTF-8も指定できる)。Windows上のOOoからのアクセスを考えると、どちらの文字コードを利用するか迷うところですが、OOoからMySQLにアクセスする場合は、OSに関係なく日本語を利用できるようになっています。つまり、Windows上のOOoからLinux上のMySQLサーバーに接続する場合は、日本語文字コードを気にしなくとも良いのです。そこで、ここではLinux側に合わせてEUC-JPを設定します。

 Debianでは、/etc/mysql/my.cnfがMySQLの設定ファイルとなっています。my.cnfファイルは、セクション別に設定を記述するようになっています。日本語の設定は、[mysqld]、[mysqldump]、[mysql]という3つのセクションに、それぞれ次のように追記します。

default-character-set=ujis

 「ujis」は、EUC-JPの設定値です。

TCP/IP接続を許可する

 OOoからMySQLに接続するためには、MySQLがTCP/IP接続を許可する設定になっていないといけません。これも/etc/mysql/my.cnfファイルで設定します。これは、同ファイル中の「skip-networking」という行を削除するだけです。

 以上で、MySQLの基本的な設定は完了です。my.cnfファイルを書き換えたので、MySQLサーバーを再起動する必要があります。表1で挙げた「サーバーの再起動」を実行してください。

 また、最後にもう1度、これまでの設定が反映されているかどうか確認してみましょう。「-u」オプションにユーザー名open、「-h」オプションにホスト名を指定するとTCP/IP経由で接続可能かが分かります。実行例5のコマンドを実行し、「mysql>」プロンプトが表示されれば、接続できていることになります。

実行例5 ホスト名を指定しTCP/IP経由で接続を確認
$ mysql -u open -h debian -p
Enter password:         ←ユーザーopenのパスワードを入力
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13 to server version: 4.0.22-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

このページで出てきた専門用語
rootユーザー
このrootユーザーは、Linuxの管理者としてのrootユーザーではなく、あらかじめMySQLのデータベースを操作できるユーザーとして登録されているものである。新たにMySQLのユーザーを追加した場合は、削除しても構わない。


次ページ:JDBCドライバのインストール

       1|2 次のページへ

Copyright(c)2010 SOFTBANK Creative Inc. All rights reserved.

注目のテーマ