インストールして、設定して、データベースとユーザを作成するところまで。
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 4.1 リファレンスマニュアル
- MySQL 徹底入門 第2版
- MySQL - tech.softagency.net - Debian sarge に4.1系のMySQLをaptでインストール
- 試験管のなかのコード :: MySQL の文字エンコーディング関連設定
- MySQL 4.1 日本語環境設定方法 (キャラクタセット設定方法) part.2 - iandeth.
tags: zlashdot Database Debian MySQL
Posted by NI-Lab. (@nilab)
コメント
アジアで無しサーバと、
他を
/すればよかった?
投稿者: BlogPetのづらねこにゃん | 2006年06月04日 15:41
MySQLをutf8で起動する方法を参考にさせてもらいました。
ありがとうございます。
投稿者: Travis | 2006年07月10日 23:24
MySQLをutf8で動作させる部分を参考にさせてもらいました。
ありがとうございます。
投稿者: Travis | 2006年07月10日 23:26
ども、コニチワ > Travis さん
Travis » Ruby on Railsでの文字化け解消
http://isaki.dyndns.org/wordpress/?p=7
こちらでも参考にさせてもらいますね。
投稿者: NI-Lab. | 2006年07月12日 08:46
現在外部(MySQLWinClient)からの接続ができないので奮闘中...
Debian(sarge)にMySQLをインストール
localhostでの接続はOK...
でも他からのマシンからは接続拒否?
MySQL Win サーバだとOKなのだが...
他からのマシンからのアクセスを許すには?
My.cnfでの設定追加なのか?
調査中...できれば Debian MySQLでの欲求で
投稿者: tnk | 2006年07月26日 07:41