* MySQL [#pcbd758b] ** TODO [#fd5a7637] 以下の内容はかなり古いところがあるので直すべし。例えば今はダンプは mysqldump -u root -p -A >all.sql mysqldump -u root -p -B db1 db2 db3 >db123.sql みたいな感じでOK(latin1指定は不要)。 ** インストール [#bb00b93d] 単なるmysqlのほかにmysql-serverというパッケージが必要。 yum install mysql-server /sbin/chkconfig --level 345 mysqld on /etc/rc.d/init.d/mysqld start ** パスワードの設定 [#u7c84b2f] 起動した時点ではMySQLの4つのデフォルトユーザにパスワードが設定されていない。 mysql -u root と打ち込むとパスワードなしで入れる。 select user,host,password from mysql.user; と打つと,ユーザ名,ホスト名,パスワードのハッシュが現れる。 update mysql.user set password=password('hoge') where user='root'; flush privileges; で管理人のパスワードをhogeにできる。 mysql.user等を変えたときはflush privilegesするのが安全。 空ユーザ名のユーザは消してもいい: delete from mysql.user where user=''; flush privileges; これで quit; してもう一度 mysql -u root しても入れない。 mysql -u root -p と打つとパスワードを聞いてくる。 ** ユーザとデータベースの作成 [#wae1fdbc] データベース foo を作り,oku.edu.mie-u.ac.jp からログインするユーザ bar に自由に操作させる: mysql -u root -p create database foo; grant all privileges on foo.* to bar@'oku.edu.mie-u.ac.jp' identified by 'somepassword'; ** データベース管理 [#n68d63cf] mysqlshow コマンド(オプション -u root -p とかを付ける)でデータベース一覧が表示される。 さらにデータベース名を引数に与えれば,そのデータベース中のテーブル一覧が表示される。 mysql というデータベースには全体の管理情報が入っている。 データベースごとにバックアップ(SQLダンプ)するには mysqldump コマンドを使う。 表をロックする権限のあるユーザでやらないとエラーになる。 mysqldump --opt -v -u root -p dbname | gzip >dbname.sql.gz 原理的にはこれでいいが,デフォルトのままのデータベースでは日本語がそのまま8ビットスルーで格納されているようだ(euc-jpなら問題ない)。 これを上記のようにダンプすると,どういうわけかutf-8にエンコードされて8ビット文字の頭に0xc2とか0xc3とかが入ったファイルになってしまった。 オプション --default-character-set=latin1 を付ければいいようだ。 これをリストアするには例えば次のようにする。 mysqladmin create dbname zcat dbname.sql.gz | mysql -u root -p dbname mysql データベースをリストアした後は mysqladmin flush-privileges を行う。 mysqldump -u root -p -A --default-character-set=latin1 | gzip >all.sql.gz zcat all.sql.gz | mysql -u root -p データベースの構造は mysql コマンドでも調べられる。 show databases; でデータベース一覧,show tables; で現在のデータベースのテーブル一覧,describe テーブル名; でテーブルのコラム一覧が表示される。 ** 文字コードの設定 [#ta4c2f75] mysql クライアントのプロンプトで status; と打ち込むと現在の文字コードが表示される。 デフォルトでは latin1になっている。 これで8ビットスルーで扱われ,euc-jpなら特に問題はなさそうだ。 文字コードを設定するには /etc/my.cnf にたとえば次のように書く(ujisはeuc-jpの意味)。 [mysqld] default-character-set=ujis [mysql] default-character-set=ujis このように作り直したデータベースに latin1 でダンプしたものをリストアするには,ダンプ中で DEFAULT CHARSET=latin1 となっているところを ujis に直さなければならない。 ** ソースからのインストール [#q41f30cd] MySQL 5.xをVine Linux 3.2にインストールする。 あらかじめ mysql:mysql というユーザ:グループを作る: mysql:x:101:104:MySQL server:/usr/local/mysql:/bin/bash mysql:x:104: http://dev.mysql.com/ からソースをいただいてきて展開。 その中に入って CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors \ -fno-exceptions -fno-rtti" ./configure \ --prefix=/usr/local/mysql --enable-assembler \ --with-mysqld-ldflags=-all-static make make install cp support-files/my-medium.cnf /etc/my.cnf cd /usr/local/mysql bin/mysql_install_db --user=mysql chown -R root . chown -R mysql var chgrp -R mysql . cp support-files/mysql.server /etc/rc.d/init.d/mysql cd /etc/rc.d/init.d chmod 755 mysql chkconfig --add mysql ./mysql start アップグレード時は /etc/rc.d/init.d/mysql stop しておいてからroot権限でmake installまですればよいだろう。 ** 読み物 [#h7d77404] -[[MySQL日本語の旅:http://oss.timedia.co.jp/index.cgi/kahua-web/show/MySQL%C6%FC%CB%DC%B8%EC%A4%CE%CE%B9]] -[[新キャラクタセット cp932 / eucjpms:http://www.mysql-partners-jp.biz/techinfo/tech_01.html]] ----- #comment