さくらのVPS を使いはじめる 5 – MySQL のインストールと初期設定
さくらのVPS への作業メモ 5。今回は MySQL のインストールと初期設定をおこなう。
もくじ
CentOS の環境を日本語にする
今回の内容とはあまり関係ないのだが、さくらのVPS の CentOS は初期状態が英語環境なので、これを日本語にしておく。この設定は /etc/sysconfig/i18n に指定されているので、これを vi で開く。
$ sudo vi /etc/sysconfig/i18n
すると以下のような内容になっているので、
LANG="C" SYSFONT="latarcyrheb-sun16"
LANG の内容を以下のように編集する。
LANG="ja_JP.UTF-8" SYSFONT="latarcyrheb-sun16"
編集が完了したら保存して、再ログインするとメッセージが日本語化される。例えば ls -l を実行したときの内容を比べると、初期状態では、
$ ls -l total 36 -rw-r--r-- 1 root root 33726 9月 15 22:30 httpd.conf
となっているが、日本語化されると以下のように「total」という表記が「合計」に変わる。
$ ls -l 合計 36 -rw-r--r-- 1 root root 33726 9月 15 22:30 httpd.conf
日本語版のマニュアルが用意されているコマンドなら、man コマンドによる表示も日本語化されるので便利だと思う。
MySQL のインストール
まずは MySQL がインストールされているかを確認する。
$ rpm -qa mysql-server $
ありません。というわけでインストールをおこなう。
MySQL の公式サイトを見ると最新版は 5.1.50 のようだが、手軽なので Apache のときと同様に今回も yum を利用してインストールする。MySQL のパッケージは mysql-server なので、これを指定して yum を実行する。
$ sudo yum -y install mysql-server ... 中略 ... Installed: mysql-server.x86_64 0:5.0.77-4.el5_5.3 Dependency Installed: mysql.x86_64 0:5.0.77-4.el5_5.3 perl-DBD-MySQL.x86_64 0:3.0007-2.el5 perl-DBI.x86_64 0:1.52-2.el5 Complete!
前に yum を利用すると、依存関係のあるパッケージを自動的にインストールしてくれると書いたが、それらは Dependency Installed として出力される。これをメモしておくと、最新版を自前でインストールするときの参考になるため、今回から記録することにした。
インストールされたことを念のために確認しておく。
$ rpm -qa mysql-server mysql-server-5.0.77-4.el5_5.3
ばっちり。バージョンは 5.0.77 になるようだ。次は初期設定をおこなう。
文字コード
まずは MySQL の文字コードを設定する。これは /etc/my.cnf というファイルに設定されているので、ユーザーの HOME にバックアップを取ってから vi で開く。
$ cd $HOME $ cp /etc/my.cnf . $ sudo vi /etc/my.cnf
開いたファイルを以下のように編集する。背景色をハイライトしている箇所が追記部分となる。
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 # character-set default-character-set=utf8 skip-character-set-client-handshake # Disabling symbolic-links is recommended to prevent assorted security risks; # to do so, uncomment this line: # symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqldump] default-character-set=utf8
日本語のデータも入れることを考慮し、文字コード関連の設定を UTF-8 にしている。EUC-JP や Shift_JIS にすることも可能だが、わざわざ設定する意味はないと思う。
10 行目で既定の文字コードを UTF-8 に、11 行目でクライアントの文字コードを無視するように設定している。21 行目からは機能ごとの文字コード設定となる。
サービス登録と起動
MySQL も Apache のように自動起動してほしいので、chkconfig で設定をおこなう。まずは現状を確認する。
$ chkconfig --list mysqld mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off
初期状態では自動起動になっていないようなので、設定する。
$ sudo chkconfig mysqld on $ chkconfig --list mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off
これで OK。自動起動を設定したものの、現在の MySQL はまだ動いていないので、起動する。
$ sudo /etc/rc.d/init.d/mysqld start MySQL データベースを初期化中: Installing MySQL system tables... OK Filling help tables... OK ... 中略 ... MySQL を起動中: [ OK ]
ちなみに sudo や root 権限なしで実行するとエラーになる。
MySQL の root ユーザーにパスワードを設定する
まずはデータベース操作の全権限を持つ root にパスワードを設定する。
$ sudo mysqladmin -u root password 'パスワード'
正しく設定されたことを確認するために、root でログインしてみる。コマンドは mysql -u root -p となる。 -u でユーザー、-p でパスワードの使用を指定する。パスワード入力を求められたら何も入力せずに Enter を押す。
$ mysql -u root -p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
エラーになっているのでパスワードが設定されていることがわかる。今度はパスワードを入力する。
$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.0.77 Source distribution Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>
ログインできた。
ちなみにプロンプトが mysql> となっているときは MySQL コマンドラインツールの操作になり、通常のシェルコマンドは受け付けないので注意する。この状態から抜ける場合は quit と打ち込んで Enter を押すか、Ctrl + D を押す。するとプロンプトに Bye と表示されてシェルに戻れる。
コマンドラインツールは専用コマンドと SQL の直接実行をサポートしている。操作については以下を参照のこと。
コマンドが苦手なら MySQL Workbench からも操作できるが、この一連の作業メモではコマンドラインツールを利用する。GUI を使った説明は大変すぎる ( スクリーンショットだらけになる ) なので。
不要なユーザーとデータベースの削除
初期状態の MySQL には、いくつかの既定ユーザーとデータベースが設定されているが、root 以外は不要なので消しておく。root 権限が強力すぎると思ったときは、必要に応じてユーザーを追加する。
まずはユーザーを削除する。これは mysql というデータベースに格納されているので、内容を確認してみる。
$ mysql -u root -p mysql mysql> SELECT user, password, host FROM user; +------+------------------+-----------------------+ | user | password | host | +------+------------------+-----------------------+ | root | XXXXXXXXXXXXXXXX | localhost | | root | | wwwXXXXX.sakura.ne.jp | | root | | 127.0.0.1 | | | | localhost | | | | wwwXXXXX.sakura.ne.jp | +------+------------------+-----------------------+ 5 rows in set (0.00 sec)
さきほどパスワードを設定したユーザーは root@localhost で、他が不要となる。出力されたテーブルを見ると、root で localhost 以外のユーザーが 2 名、匿名のユーザーが 2 名、登録されている。以下の SQL を発行して消す。
DELETE FROM user WHERE user = '' OR ( user = 'root' AND host != 'localhost' );
実際にプロンプトから実行した後、ユーザー一覧を出力してみる。
mysql> DELETE FROM user WHERE user = '' OR ( user = 'root' AND host != 'localhost' ); Query OK, 4 rows affected (0.01 sec) mysql> SELECT user, password, host FROM user; +------+------------------+-----------+ | user | password | host | +------+------------------+-----------+ | root | XXXXXXXXXXXXXXXX | localhost | +------+------------------+-----------+ 1 row in set (0.01 sec)
ばっちり。
今度は不要なデータベースを消す。まずはどんなものが定義されているかを出力してみる。
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec)
3 つのデータベースがあり、これらの内の test が不要。これは SQL の練習目的で用意されているものだと思うのだが、私にとっては不要なので、以下のように消す。
mysql> DROP DATABASE test; Query OK, 0 rows affected (0.00 sec) mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec)
さよなら test。もう会うことはないだろう。
…今回はここまで。次回は Ruby 関連のインストールをおこなう。