MySQL は高速性と堅牢性を追及したマルチユーザ・マルチスレッドのSQLデータベースで、 世界で最も人気のあるフリーのリレーショナルデータベースサーバ。 Movable TypeとかNucleus等を利用する場合は各種データをMySQLデータベースに保存するようになっているので、ここではMySQLを使ったデータベースサーバを構築する。
■MySQLインストール
mysql-serverをインストール [root@server1 ~]# yum -y install mysql-server
■MySQL設定
MySQLサーバーの文字コードとMySQLクライアントの文字コードをUTF-8にする
[root@server1 ~]# 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 default-character-set = utf8 ← 追加 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid 最終行に追加 [mysql] default-character-set = utf8
■MySQL起動
MySQLの起動 [root@server1 ~]# /etc/init.d/mysqld start MySQL データベースを初期化中: Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h server1.yokensaka.com password 'new-password' Alternatively you can run: /usr/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd /usr ; /usr/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd /usr/mysql-test ; perl mysql-test-run.pl Please report any problems with the /usr/bin/mysqlbug script! [ OK ] mysqld を起動中: [ OK ]
■MySQL自動起動設定
MySQLの自動起動設定 [root@server1 ~]# chkconfig mysqld on MySQLの自動起動設定確認 [root@server1 ~]# chkconfig --list mysqld mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off ランレベル2~5がオンの状態であることを確認
■rootユーザへのパスワード設定
MySQLのrootユーザにはデフォルトではパスワードが設定されていないため、安全のためにパスワードを設定。
MySQLサーバーへrootユーザでログイン [root@server1 ~]# mysql -u root [root@server1 higo]# mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.52 Source distribution Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 登録済ユーザ及びパスワードの確認 mysql> select user,host,password from mysql.user; +------+-----------------------+----------+ | user | host | password | +------+-----------------------+----------+ | root | localhost | | ← パスワードが設定されていない | root | server1.yokensaka.com | | ← パスワードが設定されていない | root | 127.0.0.1 | | | | localhost | | | | server1.yokensaka.com | | +------+-----------------------+----------+ 5 rows in set (0.00 sec) localhostのrootユーザにパスワードを設定 mysql> set password for root@localhost=password('パスワード'); Query OK, 0 rows affected (0.00 sec) server1.yokensaka.comのrootユーザにパスワードを設定 mysql> set password for root@server1.yokensaka.com=password('パスワード'); Query OK, 0 rows affected (0.00 sec) mysql> exit ← いったんログアウト Bye rootユーザでパスワードありでMySQLサーバーへログイン [root@server1 ~]# mysql -u root -pパスワード Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.52 Source distribution Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 登録済ユーザ及びパスワードの確認 mysql> select user,host,password from mysql.user; +------+-----------------------+-------------------------------------------+ | user | host | password | +------+-----------------------+-------------------------------------------+ | root | localhost | *4202C8EE0ABB7FD2186E1CB0180B55C5272A8556 | ← パスワードが設定された | root | server1.yokensaka.com | *4202C8EE0ABB7FD2186E1CB0180B55C5272A8556 | ← パスワードが設定された | root | 127.0.0.1 | | | | localhost | | | | server1.yokensaka.com | | +------+-----------------------+-------------------------------------------+ 5 rows in set (0.00 sec) mysql> exit ← いったんログアウト Bye
※ドメインにハイフン(-)が入ってる場合はドメインをシングルクォーテーションで囲む
■匿名ユーザの削除
MySQLには匿名ユーザがデフォルトで登録されており、ユーザ名とパスワードなしでMySQLサーバーへログインできてしまうため、安全のためにこのユーザを削除。
rootユーザでパスワードありでMySQLサーバーへログイン [root@server1 ~]# mysql -u root -pパスワード Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 6 Server version: 5.1.52 Source distribution Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 登録ユーザの確認 mysql> select user,host from mysql.user; +------+-----------------------+ | user | host | +------+-----------------------+ | root | 127.0.0.1 | | | localhost | | root | localhost | | | server1.yokensaka.com | | root | server1.yokensaka.com | +------+-----------------------+ 5 rows in set (0.00 sec) 匿名ユーザを削除 mysql> delete from mysql.user where user=''; Query OK, 2 rows affected (0.00 sec) 匿名ユーザが削除されてるか確認 mysql> select user,host from mysql.user; +------+-----------------------+ | user | host | +------+-----------------------+ | root | 127.0.0.1 | | root | localhost | | root | server1.yokensaka.com | +------+-----------------------+ 3 rows in set (0.01 sec) mysql> exit ← いったんログアウト Bye 匿名ユーザでMySQLサーバーへログインできないことを確認 [root@server1 ~]# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
■testデータベースの削除
MySQLにはデフォルトでtestという空のデータベースが登録されているが、不要のため、このデータベースを削除。
rootユーザでMySQLサーバーへログイン [root@server1 ~]# mysql -u root -pパスワード Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 5.1.52 Source distribution Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 登録データベースを確認 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | test | +--------------------+ 3 rows in set (0.00 sec) testデータベースを削除 mysql> drop database test; Query OK, 0 rows affected (0.00 sec) testデータベースが削除されてるか確認 mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | +--------------------+ 2 rows in set (0.00 sec) mysql> exit ← ログアウト Bye
■MySQL確認
rootでMySQLサーバーへログイン [root@server1 ~]# mysql -u root -pパスワード Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.52 Source distribution Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. takaデータベースへの全てのアクセス権限を持った、新規ユーザtakaを登録 mysql> grant all privileges on taka.* to taka@localhost identified by 'パスワード'; Query OK, 0 rows affected (0.00 sec) mysql> select user from mysql.user where user='taka'; ← takaユーザ登録確認 +--------+ | user | +--------+ | taka | +--------+ 1 row in set (0.00 sec) mysql> exit ← ログアウト Bye takaユーザでMySQLサーバーへログイン [root@server1 ~]# mysql -u taka -pパスワード Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.52 Source distribution Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> create database taka; ← takaデータベース作成 Query OK, 1 row affected (0.00 sec) mysql> show databases; ← データベース作成確認 +--------------------+ | Database | +--------------------+ | information_schema | | taka | +--------------------+ 2 rows in set (0.00 sec) mysql> use taka ← takaデータベースへ接続 Database changed mysql> create table taka(num int, name varchar(50)); ← takaテーブル作成 Query OK, 0 rows affected (0.01 sec) mysql> show tables; ← テーブル作成確認 +----------------+ | Tables_in_test | +----------------+ | taka | +----------------+ 1 row in set (0.00 sec) mysql> insert into taka values(1,'データAB'); ← takaテーブルへデータ登録 Query OK, 1 row affected (0.00 sec) mysql> select * from taka; ← データ登録確認 +------+----------+ | num | name | +------+----------+ | 1 | データAB | +------+----------+ 1 row in set (0.01 sec) mysql> update taka set name='データAB'; ← takaテーブル内データ更新 Query OK, 1 row affected (0.00 sec) Rows matched: 1 Changed: 0 Warnings: 0 mysql> select * from taka; ← データ更新確認 +------+----------+ | num | name | +------+----------+ | 1 | データAB | +------+----------+ 1 row in set (0.00 sec) mysql> delete from taka where num=1; ← takaテーブル内データ削除 Query OK, 1 row affected (0.02 sec) mysql> select * from taka; ← データ削除確認 Empty set (0.00 sec) mysql> drop table taka; ← testテーブル削除 Query OK, 0 rows affected (0.00 sec) mysql> show tables; ← テーブル削除確認 Empty set (0.00 sec) mysql> drop database taka; ← データベースtaka削除 Query OK, 0 rows affected (0.00 sec) mysql> show databases; ← データベース削除確認 +--------------------+ | Database | +--------------------+ | information_schema | +--------------------+ 1 row in set (0.00 sec) mysql> exit ← ログアウト Bye rootでMySQLサーバーへログイン [root@server1 ~]# mysql -u root -pパスワード Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.52 Source distribution Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. takaユーザから全てのデータベースへのアクセス権限を剥奪 mysql> revoke all privileges on *.* from taka@localhost; Query OK, 0 rows affected (0.00 sec) takaユーザ削除 mysql> delete from mysql.user where user='taka' and host='localhost'; Query OK, 1 row affected (0.03 sec) takaユーザ削除確認 mysql> select user from mysql.user where user='taka'; Empty set (0.00 sec) mysql> flush privileges; ← takaユーザの削除をMySQLサーバーへ反映 Query OK, 0 rows affected (0.02 sec) mysql> exit ← ログアウト Bye
■文字セットの確認
MySQLを使ったブログ等が文字化けしたときは、以下のコマンドでサーバーが持っている文字セットとクライアントが持っている文字セットを確認できる。
[root@server1 ~]# mysql -u root -pパスワード Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 22 Server version: 5.1.52 Source distribution Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> show variables like 'character\_set\_%'; +--------------------------+--------+ | 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 | +--------------------------+--------+ 7 rows in set (0.00 sec)
クライアント側の設定が反映される項目
character_set_client
character_set_connection
character_set_results
サーバー側の設定が反映される項目
character_set_database
character_set_server
■Movable Typeの初期設定
Movable Typeのブログデータを保存するデータベースの初期設定を行います。
rootでMySQLサーバーへログイン [root@server1 ~]# mysql -u root -pパスワード Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 2 Server version: 5.1.52 Source distribution Copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved. This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL v2 license Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> 「mt」というデータベースを作成 mysql> create database mt; Query OK, 1 row affected (0.01 sec) 管理DBをデフォルト(管理をカレント) mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed 「mt」というデータベースにログインするユーザー名とパスワードを設定 mysql> grant usage on mt.* to higo@localhost identified by 'パスワード'; Query OK, 0 rows affected (0.00 sec) 「mt」というデータベースに対してすべての権限を「higo」に許す mysql> grant all on mt.* to higo@localhost; Query OK, 0 rows affected (0.00 sec) mysql> exit ← ログアウト Bye