MySQL

勉強しようと思ってずっと放置だったけど少しかじってみた。
GentooについてのMySQLの覚書。まずはインストールから使い出す前まで。
●インストール準備
他のディストリではmysqlユーザーを追加するが、Gentooではemergeでmysqlをインストールした段階でユーザーが作成されるので特に不要。
●コンパイルオプション
USEフラグは下記のものが指定可能。(5.0.90-r2の場合)
フラグの後に(L)があるものはローカルフラグ、無いものはグローバルフラグ。
・community(L) – Enables the community features from upstream.
・perl – Adds support/bindings for the Perl language
・ssl – Adds support for Secure Socket Layer connections
・berkdb – Adds support for sys-libs/db (Berkeley DB for MySQL)
・big-tables(L) – Make tables contain up to 1.844E+19 rows
・cluster(L) – Add support for NDB clustering (deprecated)
・debug – Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see http://www.gentoo.org/proj/en/qa/backtraces.xml
・embedded(L) – Build embedded server (libmysqld)
・extraengine(L) – Add support for alternative storage engines (Archive, CSV, Blackhole, Federated(X), Partition)
・latin1(L) – Use LATIN1 encoding instead of UTF8
・max-idx-128(L) – Raise the max index per table limit from 64 to 128
・minimal – Install a very minimal build (disables, for example, plugins, fonts, most drivers, non-critical features)
minimal(L) – Install client programs only, no server
・profiling(L) – Add support for statement profiling (requires USE=community)
・static – !!do not set this during bootstrap!! Causes binaries to be statically linked instead of dynamically
・test – Workaround to pull in packages needed to run with FEATURES=test. Portage-2.1.2 handles this internally, so don’t set it in make.conf/package.use anymore
test(L) – Install upstream testsuites for end use.
ざっと見た感じ、configureに影響するのはSSLだけかな。あとはコンパイルされるプログラムやライブラリなどの利用形態で決めればいい。デフォルトのままで十分かな?berkdb、perlが利用状況によって指定できるかどうかくらいか。
●インストール
emerge mysqlでインストールされる。(emerge -C mysqlでアンインストール)
●起動前の設定
1./etc/mysql/my.cnfを編集する。(大抵デフォルトで問題ない)
2.emerge –config =mysql-(バージョン) 。rootのパスワードが設定される。
●デーモンの起動
/etc/init.d/mysql startで起動、stopで停止する。
システム起動時に自動起動させるならrc-updateで追加しておく。
●起動後の設定
1.testデータベース、匿名ユーザーの削除
必ずしも必要で無いが、セキュリティポリシーとして不用意に使わせない為にも消す。
自分は消さなくてもいいやって人はやらなくてもいい。
匿名ユーザーはデフォルトで接続と参照しか出来ないので放置しても実害はなさそう。
(でも、見られるって事は何かされるトリガーになるので危険と判断するかは個人の自由)
・testデータベース削除
mysql -u root -pを実行し、パスワード入力してクライアントを起動。
show databases;でデータベースを一覧する。information_schemaとmysql以外がユーザー用なので
デフォルトであるtestを消しておく(drop database test;で消せる)。
・匿名ユーザー削除
ユーザー情報はmysqlデータベースのuserテーブルにある。
select User,host from mysql.user; で一覧できる。
ユーザーがスペースなのは匿名ユーザーなのでこれを消しておく。
delete from mysql.user where User=”;
flush privileges;
これでmysql単体で実行してもエラーとなる。起動は-uでユーザーを指定する。
2.ユーザー登録
mysql -u root -pでクライアントから接続する。
grant all on *.* to ユーザー@localhost identified by ‘パスワード’;
・allはすべての権限なので、個別に権限を与えて利用を限定させることも可能。
・権限の削除はrevokeを使って消す。
・ユーザーの削除はdelete from user where user=’ユーザー’で行う。
・パスワードはset password=password(‘新パスワード’);で変更可能。他人のパスワードはset password for ユーザー=…で行う。
(ここで言うユーザーはシステムのユーザーとは違う。ローカル、ネットワーク越しなどで接続するMySQL用ユーザーを登録する必要がある。ユーザーのマッピングとかも機能であるらしい)