18 Raspberry PiでWEBサーバー(LAMPスタック)構築 その3/4 (MySQL導入)

さて、WEBサーバー構築のためのLAMPスタッフ導入は今回が最後です。
データベースソフトのMySQLをインストールしてしまいます。

流れは以下です。今回もサクッと終るかな?
1.MySQLインストール
2.設定
3.テスト

(2014年5月5日追記)
色々調べててわかりましたが、PHPMyAdminというPHPを使ってブラウザからMySQLを操作できるソフトがあるようです。便利そうなのですがかなり攻撃の対象になっているようなのでインストールしません。

まだサーバーを公開して数日なのに台湾のIPアドレスから古いPHPMyAdmin(サーバーに侵入できる脆弱性がある)がインストールされていないか調べられている痕跡がありました。

もし入れる場合でもアクセスはローカルからのみに制限して外部からスクリプトにアクセス出来ないようにしたほうがいいと思います。
(追記ここまで)

参考URL
r271-635
CentOSで自宅サーバー構築
sa-sa-ki.jp
Lightly and Leniently

スポンサーリンク

【1.MySQLインストール】

インスコ~
sudo apt-get install mysql-server

インストール中にMySQLのrootパスワードを設定します。
パスワードを入力してOK
再入力してOK

なんかワーニングが出てますね。
————- インストール中の表示(の一部)———–
140428 19:24:55 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
140428 19:24:55 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
(中略)
insserv: warning: script ‘mathkernel’ missing LSB tags and overrides
——————– ここまで ————–

【2.設定】

ワーニングの修正

インストールの際に出たワーニングを直しておきます。
ドンピシャの参考ページがありました。
http://kb.parallels.com/en/120461

/etc/mysql/my.cnfを修正
sudo vi /etc/mysql/my.cnf

修正箇所
51行目付近
key_buffer = ※※Mをkey_buffer_size = ※※Mに変更 (※※部は入力されてるサイズ)
57行目付近
myisam-recover = BACKUPをmyisam-recover-options = BACKUPに変更
119行目付近
key_buffer = ※※Mをkey_buffer_size = ※※Mに変更 (同上)

もうひとつもこれでなおるかな?
https://hirooka.pro/?p=4818
http://www.raspberrypi.org/forums/viewtopic.php?t=68263&p=503126

/etc/init.d/mathkernelを修正
sudo vi /etc/init.d/mathkernel

1行目の#!/bash/shの下に以下追記
### BEGIN INIT INFO
# Provides: mathkernel
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: mathkernel
### END INIT INFO

このほか、wolfram-engineを削除するのもありのようです。

MySQLサーバを再起動してみます。
sudo service mysql restart
[ ok ] Stopping MySQL database server: mysqld.
[ ok ] Starting MySQL database server: mysqld . . ..
[info] Checking for tables which need an upgrade, are corrupt or were
not closed cleanly..

ワーニングは消えました。
最後の[info]以下は標準で表示されるメッセージなので気にしたら負けのようです。

文字コードの変更

以前これをやらないでWordPressを入れたら文字化けして大変でした。
/etc/mysql/my.cnfを修正します。

sudo vi /etc/mysql/my.cnf

文字コードをutf8にする為、以下のように追記します。

30行目付近[mysqld_safe]の項目の一番下
44行目付近[mysqld]のBasic Settingsの最後のところ
上記2か所に以下の1行をそれぞれ追加
character-set-server = utf8

19行目付近[client]の項目の一番下
116行目付近[mysqldump]の項目の一番下
119行目付近[mysql]の項目の一番下
上記3か所に以下の1行をそれぞれ追加
default-character-set = utf8

——- 編集後はこんなかんじ ———–
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set = utf8 ←追加

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

# This was formally known as [safe_mysqld]. Both versions are currently parsed.
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
character-set-server = utf8 ←追加

[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
character-set-server = utf8 ←追加

(中略)

[mysqldump]
quick
quote-names
max_allowed_packet = 16M
default-character-set = utf8 ←追加

[mysql]
#no-auto-rehash # faster start of mysql but no tab completition
default-character-set = utf8 ←追加

———-ここまで ————-

設定を有効にする為、MySQL再起動
sudo service mysql restart

初期設定プログラムを実行

設定プログラムを実行します。
sudo mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MySQL
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

In order to log into MySQL to secure it, we’ll need the current
password for the root user. If you’ve just installed MySQL, and
you haven’t set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): ←インストール時に設定したrootパスを入力
OK, successfully used password, moving on…

Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

You already have a root password set, so you can safely answer ‘n’.

Change the root password? [Y/n] n ←rootパスは設定してあるのでn
… skipping.

By default, a MySQL installation has an anonymous user, allowing anyone
to log into MySQL without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] ←匿名ユーザーの削除(空エンター)
… Success!

Normally, root should only be allowed to connect from ‘localhost’. This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] ←リモートからのルートログイン禁止(空エンター)
… Success!

By default, MySQL comes with a database named ‘test’ that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] ←テストデータベースの削除(空エンター)
– Dropping test database…
ERROR 1008 (HY000) at line 1: Can’t drop database ‘test’; database doesn’t exist
… Failed! Not critical, keep moving…
– Removing privileges on test database…
… Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] ←空エンター
… 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!

【3.テスト】

MySQLにログインしてテストします。
mysql -u root -p
Enter password: ←MySQLのrootパスワードを入力
(中略)
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.

mysql> show databases; ←登録データベースの確認(最後の;まで入力してエンター)
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema | ←初期設定でtestデータベースは削除されてる
+——————–+
3 rows in set (0.00 sec)

mysql> show variables like ‘char%’; ←文字コードがutf8になっているか確認
+————————–+—————————-+
| 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)

mysql> quit ←MySQLからログアウト
Bye

もしutf8の代わりにlatinlとかになってたら設定をミスってる可能性があるので設定ファイル(/etc/mysql/my.cnf)を見直してください。

MySQLのインストールと設定は以上です。
ワーニングが出たりで思ったより長くなりました。
次回、そのほかのモジュールをインストールした後、サーバを公開します。

(2014年5月5日追記)
MySQLに外部からアクセスすることはないのでルーターのポートを閉じておいたほうがいいと思います。
デフォルト設定ではポート番号3306です。
私はルーターの設定でポート3306に対するTCP/UDPのパケットはすべて廃棄するようパケットフィルタの設定を追加しました。
設定方法は02 Windowsソフト の準備とルーター設定でウェルノウンポートを閉じたのと同じです。
(追記ここまで)

2014年4月28日作成
2014年5月5日追記/草稿公開
2014年5月22日誤記訂正
2015年4月28日誤記訂正

スポンサーリンク

未経験からプロのエンジニアスキルを身につけることができる短期集中プログラムのご紹介です。

500時間をかけてフロント/サーバーサイド/インフラのすべてを一通り学ぶことができます。
また、専属のトレーナーと専属のキャリアアドバイザーが学習と就職の両面をサポートしてくれます。

何でも相談できるカウンセリングが無料で受けられます。無理な勧誘は一切行いませんので、お気軽にお申し込みください。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする