以下の内容はかなり古いところがあるので直すべし。例えば今はダンプは
mysqldump -u root -p -A >all.sql mysqldump -u root -p -B db1 db2 db3 >db123.sql
みたいな感じでOK(latin1指定は不要)。
単なるmysqlのほかにmysql-serverというパッケージが必要。
yum install mysql-server /sbin/chkconfig --level 345 mysqld on /etc/rc.d/init.d/mysqld start
起動した時点では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 と打つとパスワードを聞いてくる。
データベース 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';
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 テーブル名; でテーブルのコラム一覧が表示される。
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 に直さなければならない。
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まですればよいだろう。