読者です 読者をやめる 読者になる 読者になる

@Satoh_D no blog

大分にUターンしたので記念に。調べたこととか作ったこととか食べたこととか

お名前.comのVPSを借りた & 色々サーバ設定を行った vol.02

regular お名前.com VPS CentOS mysql

先日、お名前.comのVPS(KVM)を借りまして、その際に行ったサーバ設定のメモです。
前回

  • パッケージのアップデート
  • 作業用ユーザの作成
  • 作業用ユーザの公開鍵を作成
  • パスワード認証の廃止&公開鍵認証のみに設定
  • 作業ユーザでsudo出来るように設定
  • ファイアウォールの設定

まで行いました。

今回はMySQLのインストールを行います。
ApachePHPもインストールしようと思ったのですが、既に入っていたのようなので。

MySQLがインストールされているか確認する

まずはサーバにMySQLがインストールされているかを確認します。
既に入っていればやらなくて良いですから。

# rpm -qa mysql-server

この時、何も表示されていなければまだインストールされていません。
インストールされていないのが確認できたので、インストール作業を行います。

MySQLをインストールする

MySQLmysql-server, mysql-devel というパッケージをインストールすると使えるようになります。
コマンドを打つと、インストールが始まります。

# yum -y install mysql-server mysql-devel

Loaded plugins: fastestmirror, security
Setting up Install Process
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * epel: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
...
中略
...
Complete!

上記のようにComplete!が表示されればインストール完了です。
次はMySQLの設定です。

MySQLのデフォルトの文字コードUTF-8にする

MySQLのデフォルトの文字コードUTF-8にします。
設定は /etc/my.cnf を編集します。
編集前に念のためバックアップをとっておくと、いざというとき安心です。

# cp /etc/my.cnf /etc/my.cnf.bak150409

バックアップが取れたら編集します。

# vi /etc/my.cnf

ファイルを開くと以下の様な設定がすでに書かれています。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

ここに文字コードの設定を書いていきます。
まず、[mysqld]の最後に

character-set-server=utf8

を、ファイルの末尾に

[client]
default-character-set=utf-8

[mysqldump]
default-character-set=utf-8

[mysql]
default-character-set=utf-8

追記します。
それぞれ

という意味になります。
追記後のファイルはこのようになっています。

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

character-set-server=utf8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[client]
default-character-set=utf8

[mysqldump]
default-character-set=utf8

[mysql]
default-character-set=utf8

編集が終わったら :wq で保存し終了します。
ここで設定が反映されているかを確認します。

# /etc/rc.d/init.d/mysqld start

MySQLが起動したらログインし、確認します。

// MySQLにログイン
# mysql
// ここからMySQL
mysql> show variables like 'char%';

// 文字コードがそれぞれUTF-8になっていることを確認
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

UTF-8になっていることを確認したら一旦ログアウトしておきます。

mysql> quit
Bye

MySQL自動起動するよう設定を変更する

初期状態ですとLinuxを再起動するたびにMySQLを明示的に起動しないといけません。
さすがにそれは面倒なので、自動で起動するように設定を変更します。
変更前に今の状態を確認してみます。

# chkconfig --list mysqld
mysqld          0:off 1:off 2:off 3:off 4:off 5:off 6:off

0〜6までの数字はランレベルといい、システムの状態を表します。
onになっているレベルに応じてシステムが起動されます。
詳しいことは以下の記事をご覧ください。

ここで、以下のコマンドを叩いて自動起動させます。

# sudo checkconfig mysqld on

現在のランレベルを確認します。

# chkconfig --list mysqld
mysqld          0:off 1:off 2:on  3:on  4:on  5:on  6:off

2〜5がonになっていれば完了です。

MySQLのroot権限のパスワードを設定する

現状だとパスワードの入力なしでログインできてしまいます。
セキュリティ上マズイので、パスワードを設定しておきます。

# mysqladmin -u root password {好きなパスワード}

これでroot権限にパスワードが設定されました。
パスワードが設定されているか、ログインして確認してみます。

# mysql -u root -p
Enter password: 

Welcome to the MySQL monitor.  Commands end with ; or \g.
...中略...

パスワードを入力して Welcom to ...が表示されればログイン成功です。
これでパスワードの確認は問題ありません。

これでMySQLの設定が完了しました。
残りはApachePHPの設定ですね、やっと終わりが見えてきました。

今回参考にしたページ