インストールして、設定して、データベースとユーザを作成するところまで。

MySQL パッケージの調査

mysql 関連の Debian パッケージ を検索。


# apt-cache search mysql | grep ^mysql
mysql-admin - GUI tool for intuitive MySQL administration
mysql-admin-common - Architecture independent files for MySQL Administrator
mysql-client - mysql database client binaries
mysql-client-4.1 - mysql database client binaries
mysql-common - mysql database common files (e.g. /etc/mysql/my.cnf)
mysql-common-4.1 - mysql database common files (e.g. /etc/mysql/my.cnf)
mysql-navigator - GUI client program for MySQL database server
mysql-query-browser - Official GUI tool to query MySQL database
mysql-query-browser-common - Architecture independent files for MySQL Query Browser
mysql-server - mysql database server binaries
mysql-server-4.1 - mysql database server binaries
mysqltcl - Interface to the MySQL database for the Tcl language.

MySQL ライブラリパッケージの調査


# apt-cache search mysql | grep ^libmysql
libmysql-java - Java database (JDBC) driver for MySQL
libmysql-ocaml - OCaml bindings for MySql
libmysql-ocaml-dev - OCaml bindings for MySql
libmysql-ruby - MySQL module for Ruby
libmysql-ruby1.6 - MySQL module for Ruby 1.6
libmysql-ruby1.8 - MySQL module for Ruby 1.8
libmysqlclient10 - LGPL-licensed client library for MySQL databases
libmysqlclient10-dev - LGPL-licensed client development files for MySQL databases
libmysqlclient12 - mysql database client library
libmysqlclient12-dev - mysql database development files
libmysqlclient14 - mysql database client library
libmysqlclient14-dev - mysql database development files

MySQL パッケージのインストール

mysql-server-4.1 パッケージをインストール。


# dpkg -l mysql
# apt-get install mysql-server-4.1

インストール時にはヒントが表示される。

Debian Configuration

Configuring mysql-server-4.1

Install Hints

On upgrades from MySQL 3.23, as shipped with Debian Woody, symlinks in place of /var/lib/mysql or /var/log/mysql gets accidently removed and have manually be restored.

MySQL will only install if you have a non-numeric hostname that is resolvable via the /etc/hosts file. E.g. if the "hostname" command returns "myhostname" then there must be a line like "10.0.0.1 myhostname".

A new mysql user "debian-sys-maint" will be created. This mysql account is used in the start/stop and cron scripts. Don't delete.

Please remember to set a PASSWORD for the MySQL root user! If you use a /root/.my.cnf, always write the "user" and the "password" lines in there, never only the password!

See /usr/share/doc/mysql-server-4.1/README.Debian for more information.

何がインストールされたか確認。


# dpkg -l | grep mysql
ii  libdbd-mysql-p 2.9006-1       A Perl5 database interface to the MySQL data
ii  libmysqlclient 4.0.24-10sarge mysql database client library
ii  libmysqlclient 4.1.11a-4sarge mysql database client library
ii  mysql-client-4 4.1.11a-4sarge mysql database client binaries
ii  mysql-common-4 4.1.11a-4sarge mysql database common files (e.g. /etc/mysql
ii  mysql-server-4 4.1.11a-4sarge mysql database server binaries

インストールされたかどうかの確認は、パッケージ名が長くて切れてしまうので、"COLUMNS=100 dpkg -l" で表示。


# COLUMNS=100 dpkg -l | grep mysql
ii  libdbd-mysql-perl   2.9006-1            A Perl5 database interface to the MySQL database
ii  libmysqlclient12    4.0.24-10sarge1     mysql database client library
ii  libmysqlclient14    4.1.11a-4sarge2     mysql database client library
ii  mysql-client-4.1    4.1.11a-4sarge2     mysql database client binaries
ii  mysql-common-4.1    4.1.11a-4sarge2     mysql database common files (e.g. /etc/mysql/my.cnf)
ii  mysql-server-4.1    4.1.11a-4sarge2     mysql database server binaries

libmysqlclient14-dev のインストール

libmysqlclient-dev とは何か?

Package libmysqlclient14

* stable (libs): mysql database client library
  4.1.11a-4sarge2: alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc
  4.1.11a-4: amd64

Package libmysqlclient14-dev

* stable (libdevel): mysql database development files
  4.1.11a-4sarge2: alpha amd64 arm hppa i386 ia64 mips mipsel powerpc s390 sparc
  4.1.11a-4: amd64

Debian Package Search Results : libmysqlclient

何となく要るような気がしたので、libmysqlclient14-dev もインストールしてみる。


# apt-get install libmysqlclient14-dev
 
# COLUMNS=100 dpkg -l | grep mysql
ii  libdbd-mysql-perl   2.9006-1            A Perl5 database interface to the MySQL database
ii  libmysqlclient12    4.0.24-10sarge1     mysql database client library
ii  libmysqlclient14    4.1.11a-4sarge2     mysql database client library
ii  libmysqlclient14-de 4.1.11a-4sarge2     mysql database development files
ii  mysql-client-4.1    4.1.11a-4sarge2     mysql database client binaries
ii  mysql-common-4.1    4.1.11a-4sarge2     mysql database common files (e.g. /etc/mysql/my.cnf)
ii  mysql-server-4.1    4.1.11a-4sarge2     mysql database server binaries

libmysqlclient14-dev が何かよくわからないので、どんなファイルがインストールされたのか確認。


# dpkg -L libmysqlclient14-dev
/.
/usr
/usr/include
/usr/include/mysql
/usr/include/mysql/my_dbug.h
/usr/include/mysql/m_string.h
/usr/include/mysql/my_sys.h
/usr/include/mysql/my_list.h
/usr/include/mysql/my_xml.h
/usr/include/mysql/mysql.h
/usr/include/mysql/mysql_com.h
/usr/include/mysql/mysqld_error.h
/usr/include/mysql/mysql_embed.h
(略)

今回は不要だったっぽい。

root ユーザのパスワード設定

MySQL 4.1 にははじめから root というユーザが存在しているが、最初はパスワードが設定されていない。
mysql コマンドを利用する際にパスワードを聞かれるが、何も入力せずに Enter でOK。
不安なので、すぐにパスワードを設定 (set password for) する。


$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6 to server version: 4.1.11-Debian_4sarge2-log
 
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
 
mysql> set password for 'root'@'localhost'=password('hogepassword');
Query OK, 0 rows affected (0.00 sec)
 
mysql> exit
Bye
$

Welcome to the MySQL monitor...... MySQL monitor っていう名前なのか mysql コマンドは?

mysql (``ターミナルモニタ'' または単に ``モニタ'' とも呼ばれる)は、MySQL サーバへの接続、クエリの実行、および結果の表示の各機能を持つ対話式プログラムです。

MySQL 4.1 リファレンスマニュアル :: 3 MySQL チュートリアル
mysql (sometimes referred to as the “terminal monitor” or just “monitor”) is an interactive program that allows you to connect to a MySQL server, run queries, and view the results.

MySQL 3.23, 4.0, 4.1 Reference Manual :: 3 Tutorial

設定ファイル /etc/mysql/my.cnf にて 使用する日本語文字コードを設定

実は、どうやるのが正しいかわかっていない。
とりあえず Debian GNU/Linux ファイルシステムは EUC-JP として扱い、MySQL自体は UTF-8 で設定してみる(つもり)。

/etc/mysql/my.cnf の修正/追加部分を抽出。


[client]
default-character-set=ujis
 
[mysqldump]
default-character-set=ujis
 
[mysqld]
language        = /usr/share/mysql/japanese
default-character-set=utf8

# mysqldump は UTF-8 のほうが良いかも。
# でもファイルシステムは EUC-JP のつもりだし……

指定可能な日本語のキャラクタセットを、MySQL 4.1 リファレンスマニュアル :: 9.11.4 アジアのキャラクタセット から抜粋。


+----------+-----------------------------+---------------------+--------+
| Charset  | Description                 | Default collation   | Maxlen |
+----------+-----------------------------+---------------------+--------+
| ujis     | EUC-JP Japanese             | ujis_japanese_ci    |      3 |
| sjis     | Shift-JIS Japanese          | sjis_japanese_ci    |      2 |
+----------+-----------------------------+---------------------+--------+

英語版のドキュメントを見ると、どうやらちょっと違う。日本語訳はちょっと古いっぽい。
英語版のページ MySQL 3.23, 4.0, 4.1 Reference Manual :: 10.10.7 Asian Character Sets から抜粋。


# cp932 (SJIS for Windows Japanese) collations:
 * cp932_bin
 * cp932_japanese_ci (default)
 
# eucjpms (UJIS for Windows Japanese) collations:
  eucjpms_bin
  eucjpms_japanese_ci (default)
 
# sjis (Shift-JIS Japanese) collations:
 * sjis_bin
 * sjis_japanese_ci (default)
 
# ujis (EUC-JP Japanese) collations:
 * ujis_bin
 * ujis_japanese_ci (default)

でも、Debian の mysql は 4.1.11 がベースっぽいので、cp932 や eucjpms は使えないかも。

MySQLのcp932キャラクタセットはこれらの問題を解決するよう デザインされており、MySQL 4.1.12、及び5.0.3以降で使用することができます。
(中略)
5.0.3以降では、eucjpmsキャラクターセットと組み合わせて 使用することで、 cp932でユーザー定義文字の変換がサポートされ、 sjis/ujis間での変換問題にも対応している。 詳細はhttp://www.opengroup.or.jp/jvc/cde/sjis-euc-e.htmlを参照のこと。

MySQL 4.1 リファレンスマニュアル :: 9.11.4.1 cp932キャラクターセット

あと、Unicode 系を MySQL 4.1 リファレンスマニュアル :: 9.11.1 Unicode キャラクタセット から抜粋。


+---------+-----------------+-------------------+--------+
| Charset | Description     | Default collation | Maxlen |
+---------+-----------------+-------------------+--------+
| utf8    | UTF-8 Unicode   | utf8_general_ci   |      3 |
| ucs2    | UCS-2 Unicode   | ucs2_general_ci   |      2 |
+---------+-----------------+-------------------+--------+

これらの情報が MySQL 徹底入門 第2版 300ページ によくまとまっていたので抜粋。

-ujis (EUC-JP)
-sjis (Shift_JIS)
-cp932 (マイクロソフトが定義した Shift_JIS)
-eucjpms (cp932 の文字定義に対応したEUC-JP)
-latin1 (katin1)
-ucs2 (UCS-2)
-utf8 (UTF-8)
-binary (文字列を単純にバイナリ列として扱う)

ちなみに、

MySQL のデフォルトの振る舞いを日本語にしているのであれば、本来 my.cnf は不要です。

MySQL 徹底入門 第2版 362ページ

だそうで。
でも、Debian のパッケージで、デフォルトの振る舞いが日本語ということは無いと思うので、やっぱり設定必要そう。

MySQL サーバの再起動

設定を反映させるために mysql サーバを再起動。


# /etc/init.d/mysql restart

mysql サーバの起動/停止スクリプトはこれ。


# /etc/init.d/mysql
Usage: /etc/init.d/mysql start|stop|restart|reload|force-reload

キャラクタセット情報の確認

MySQL クライアントにて、ちゃんと設定されているかキャラクタセット情報を確認。


mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | ujis                       |
| character_set_connection | ujis                       |
| character_set_database   | utf8                       |
| character_set_results    | ujis                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
7 rows in set (0.00 sec)

データベースの作成

ターミナルモニタにて以下。


mysql> create database hogedb;
Query OK, 1 row affected (0.00 sec)
 
mysql> show create database hogedb;
+----------+------------------------------------------------------------------+
| Database | Create Database                                                  |
+----------+------------------------------------------------------------------+
| hogedb   | CREATE DATABASE `hogedb` /*!40100 DEFAULT CHARACTER SET utf8 */  |
+----------+------------------------------------------------------------------+
1 row in set (0.00 sec)

ユーザの登録

root ユーザを常に使うわけにはいかないと思うので、ユーザを新規登録する。

ユーザを登録 (初期パスワード無し) して、ユーザ権限を確認する。


mysql> grant all privileges on hogedb.* to hogeuser;
Query OK, 0 rows affected (0.00 sec)
 
mysql> show grants for 'hogeuser';
+------------------------------------------------------------+
| Grants for hogeuser@%                                      |
+------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'hogeuser'@'%'                       |
| GRANT ALL PRIVILEGES ON `hogedb`.* TO 'hogeuser'@'%'       |
+------------------------------------------------------------+
2 rows in set (0.00 sec)

他のユーザ登録参考例。

ユーザの登録 (初期パスワード無し・接続元ホストを指定)


grant all privileges on hogedb.* to 'hogeuser'@'localhost';

ユーザの登録 (パスワード有り)


grant all privileges on hogedb.* to hogeuser identified by 'hogepassword';

一般例。


grant all privileges on データベース名.* to ユーザ名@localhost identified by 'password';

参考


コメント

アジアで無しサーバと、


他を

/すればよかった?


MySQLをutf8で起動する方法を参考にさせてもらいました。
ありがとうございます。

MySQLをutf8で動作させる部分を参考にさせてもらいました。
ありがとうございます。

ども、コニチワ > Travis さん

Travis » Ruby on Railsでの文字化け解消
http://isaki.dyndns.org/wordpress/?p=7

こちらでも参考にさせてもらいますね。

現在外部(MySQLWinClient)からの接続ができないので奮闘中...

Debian(sarge)にMySQLをインストール
localhostでの接続はOK...
でも他からのマシンからは接続拒否?
MySQL Win サーバだとOKなのだが...
他からのマシンからのアクセスを許すには?
My.cnfでの設定追加なのか?
調査中...できれば Debian MySQLでの欲求で

tags: zlashdot Database Debian MySQL

Posted by NI-Lab. (@nilab)