MySQLを動かす (CentOS 6.5)

| データベース

ApacheでPHPを動かす」の続きの記事、今回はMySQLをインストールします。使用用途はサーバーの公開ではなく、Apache経由で公開するWebアプリのDBとしてインストールします。(公開する・・・というのは本サイトでは仮定の話です)

スポンサードリンク

MySQLのインストール

まずは、MySQLのインストールを行います。管理者権限に入って以下のコマンドでインストールを行います。

# yum install mysql-server

サービスの起動と自動起動設定

サービスの起動には以下のコマンドを実行します。

# service mysqld start

次はMySQLを自動起動サービスとして設定します。

# chkconfig --level 35 mysqld on

設定自体は一瞬で終わるので、リストで変更されたか確認します。

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

上記のように3,5が「on」に変化していれば成功です。

データベースの設定

まずは、デフォルトのエンジンをInnoDBに変更します。
※デフォルトで設定されているのはMyISAMですが、トランザクションが使えないためInnoDBにします。

yumでインストールを行うとデフォルトで「/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

このファイルは「/etc/my_backup.cnf」へ そのままバックアップを取っておきます。

mysqlには環境別に合わせて用意された設定ファイルのサンプルが「/usr/share/mysql/」以下にmy-~~.cnfというファイル名であります。

各ファイルは以下のような用途として用意されています。

my-small.cnf ~64MBのメモリしかない環境向け
my-medium.cnf ~128MB程度のメモリの環境向け
my-large.cnf ~512MBのメモリの環境向け
my-huge.cnf ~2Gのメモリが用意できる環境向け
my-innodb-heavy-4g.cnf 4Gのメモリがあり、InnoDBのエンジンのみを使う場合向け

自分の環境にあったファイルを選択し、それをベースにmysqlの設定を行います。

今回は、my-huge.cnf をベースに設定ファイルの変更を行います。

# mv /etc/my.cnf /etc/my_backup.cnf
# cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
# vi /etc/my.cnf

変更内容は抜粋の形で書きます。
※以下の設定ファイルの内容では[ ]を全角文字で表現していますが、実際の環境に適用する場合は半角文字を使用してください。

・・・(略)・・・
# The following options will be passed to all MySQL clients
[client]
#password       = your_password
port            = 3306
sokcet          = /var/lib/mysql/mysql.sock
default-character-set = utf8 ・・・・・・ (1)
・・・(略)・・・
# The MySQL server
[mysqld]
・・・(略)・・・
thread_concurrency = 8
character-set-server = utf8 ・・・・・・ (2)
default-storage-engine = InnoDB ・・・・・・ (3)
user = mysql ・・・・・・ (4)
datadir = /var/lib/mysql ・・・・・・ (5)

[mysqld_safe]
log-error=/var/log/mysqld.log ・・・・・・ (6)
pid-file=/var/run/mysqld/mysqld.pid ・・・・・・ (7)

・・・(略)・・・
# Uncomment the following if you are using InnoDB tables
innodb_data_home_dir = /var/lib/mysql ・・・・・・ (8)
innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql
# You can set .._buffer_pool_size up to 50 - 80%
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 384M
innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 100M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50

(1),(2) 文字設定をUTF-8に設定します。

(3) デフォルトのストレージエンジンをInnoDBに設定します。
(MySQL5.5以降はInnoDBが標準のデータベースになっているようですので、この記述は不要です)

(4) ~ (7) 私の環境では、この内容を記述する必要がありました。基本的には、先にバックアップを取っておいた「/etc/my_backup.cnf」の内容をコピーしたものです。(記述が必要になったのは先にmysqldを起動させてしまったせいかもしれません。)

(8) ここから以下はサンプルに書かれていた内容のコメントアウトを外しただけになります。

サービスの再起動

サービスの再起動を行います。
※私は、この時点でのmysqldの再起動に失敗したため、my.cnfに(4)~(7)の設定を記述してから実行することで状況が改善されました。

# service mysqld restart

MySQLの初期設定

管理ユーザー(root)のパスワードの設定などを行います。

# mysql_secure_installation
Enter current password for root (enter for none): <何も入力しないでEnter>
OK, successfully used password, moving on...

・・・(略)・・・
Change the root password? [Y/n] Y ・・・・・・ (9)
New password: <パスワードを入力>
Re-enter new password: <パスワードをもう一度入力>
Password updated successfully!
Reloading privilege tables..
 ... Success!

・・・(略)・・・
Remove anonymous users? [Y/n] Y ・・・・・・ (10)
 ... Success!

・・・(略)・・・
Disallow root login remotely? Y ・・・・・・ (11)
 ... Success!

・・・(略)・・・
Remove test database and access to it? [Y/n] Y ・・・・・・ (12)
 - Dropping test database...
 ... Success!
・・・(略)・・・

Reload privilege tables now? [Y/n] Y ・・・・・・ (13)
 ... Success!
Cleaning up...

All done!  If you've completed all of the above steps, your MySQL
installation should now be secure.

Thanks for using MySQL!

(9) MySQLのrootのパスワードを変更するかどうか。今回は変更するために「Y」を入力。

(10) 初期状態で用意されている匿名ユーザーを削除するかどうか。今回は削除するために「Y」を入力。残したい場合は「n」を入力。

(11) リモートでのrootログインを禁止するかどうか。禁止する場合は「Y」を入力。ログインを可能にする場合は「n」を入力。

(12) 初期状態で用意されているテスト用データベースを削除するかどうか。削除する場合は「Y」を入力。残しておく場合は「n」を入力。

(13) 権限テーブルのリロードを行うかどうか。リロードする場合は「Y」を入力。

以上でMySQLのセットアップは完了。

 

接続の確認

MySQLが動作しているかテストします。

# mysql -u root -p ・・・・・・ (14)
Enter password: <パスワードを入力>
Welcome to the MySQL monitor. Commands end with ; or \g.
・・・(略)・・・

mysql> exit
Bye

(14) mysqlへユーザーrootでパスワードを使って接続する。
(-u:ユーザーの指定、-p:パスワード入力による接続)

mysql> が表示されたら成功です。

SQL文の入力を行うことでデータベースの管理が可能です。

特に行うことが無ければ「exit」で接続を解除します。

【番外編】MySQLサーバーを外部公開する

ポートを開く必要があります。ファイアーウォールの設定を行います。

ポートはmy.cnfで設定したポート番号を指定します。(デフォルトは3306)

変更するファイルは「/etc/sysconfig/iptables」です。

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

トラックバック

トラックバックURL:

トラックバック & ピンバック

コメントはまだありません。

作ったもの

種牡馬メモサイト

フリーダムウォーズ素材メモサイト

月別アーカイブ

つぶやき

更新記録カレンダー

2024年12月
« 1月    
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

参考書籍

XHTML/HTML+CSSスーパーレシピブックXHTML/HTML+CSSスーパーレシピブック
エ・ビスコム・テック・ラボ

毎日コミュニケーションズ
売り上げランキング : 74419

Amazonで詳しく見る
現場のプロから学ぶXHTML+CSS現場のプロから学ぶXHTML+CSS
益子 貴寛,堀内 敬子,小林 信次,千貫 りこ,伊藤 学,山田 あかね,西畑 一馬,CSS Nite

毎日コミュニケーションズ
売り上げランキング : 39400

Amazonで詳しく見る