特集

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

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

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 | 次のページ

[鎌滝雅久,UNIX USER]

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




キャリアアップ



エンタープライズ・ピックアップ

news004.jpg 世界で勝つ 強い日本企業のつくり方:利用契約の検討――グローバルクラウドで失敗しないために(前編)
2010年以降、クラウドサービスの利用がさらに加速する。サービスを利用する企業はプロバイダーのデータセンターに預けた自社情報を保護するために、法的な要素を理解しておかなければならない。企業が注意を払うべき法的な検討事項を整理する。

news001.jpg IT投資の新方程式:「Twitter使ってます」――現役MS社員が“社員力”を語る(前編)
マイクロソフトが掲げるプロモーションメッセージ「社員にチカラを。ITで企業力を。(以下、BIEB)」からは、ITで社員の生産性を向上することが業績の拡大につながる、といったニュアンスを感じる。そこで気になるのが「じゃあ、マイクロソフトの社員自身はどうなのよ?」ということ。3人の現役MS社員により実態が明らかになる……?

news010.jpg 産業構造を変えるか:「住宅クラウド」の衝撃
住宅都市工学研究所が進める「住宅クラウド」は、クラウドが企業のIT領域にとどまらず、ビジネスのやり方自体を変える可能性を示している。

news010.jpg オルタナティブな生き方 栗原進さん:ネットでリアルを楽しくしたい
SE出身の企業広報マンでありながら、趣味は落語で憧れの人はインディ・ジョーンズとアナログ全開の栗原さんに、ブログを書く理由やネットからはじまるコミュニケーションについて伺った。

news001.jpg 最強最速アルゴリズマー養成講座:トップクラスだけが知る「このアルゴリズムがすごい」――「探索」基礎最速マスター
プログラミングにおける重要な概念である「探索」を最速でマスターするために、今回は少し応用となる探索手法などを紹介しながら、その実践力を育成します。問題をグラフとして表現し、効率よく探索する方法をぜひ日常に生かしてみましょう。