20170502-title03

前回のエントリーで、ラズパイにMySQL5.7をインストールするのは諦めようと思ったんだけど、1か月もかけて最後は諦めるって悔しくて海外のサイトにも触手を伸ばして少し調べてみたら、なんか神がいた。ヤバい。

つ~か、Redhat系しか触ったことなかったけど、Debian最高だな。




Debianのftpサイトからdebファイルを入手

参考にさせて頂いたサイトはこちら。もう神。本当に感謝していることを伝えたい。

http://ftp.debian.org/debian/pool/main/ の下には色々なアプリがあって、アプリ1つ1つに対してi386だけでなくmipsやpowerpcとかプラットフォーム(CPU アーキテクチャ)毎にバイナリのdebファイルが用意されていて、「Debianすげぇー!」とマジで思いました。マジ感動した。

ちなみにラズパイの場合は「~armhf.deb」がそれっぽいファイルだ。

というわけでMySQL5.7のインストールである。

まずは、以下のコマンドで必要なdebファイルを取ってくる。

$ wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/libmysqlclient-dev_5.7.18-1_armhf.deb
$ wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/libmysqlclient20_5.7.18-1_armhf.deb
$ wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/libmysqld-dev_5.7.18-1_armhf.deb
$ wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/mysql-client-5.7_5.7.18-1_armhf.deb
$ wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/mysql-client-core-5.7_5.7.18-1_armhf.deb
$ wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/mysql-server-5.7_5.7.18-1_armhf.deb
$ wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/mysql-server-core-5.7_5.7.18-1_armhf.deb
$ wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/mysql-source-5.7_5.7.18-1_armhf.deb
$ wget http://ftp.debian.org/debian/pool/main/m/mysql-5.7/mysql-testsuite-5.7_5.7.18-1_armhf.deb
$ wget http://ftp.debian.org/debian/pool/main/m/mysql-defaults/mysql-common_5.8+1.0.2_all.deb
$ wget http://ftp.debian.org/debian/pool/main/m/mecab/libmecab2_0.996-3.1_armhf.deb
$ wget http://ftp.debian.org/debian/pool/main/l/lz4/liblz4-1_0.0~r131-2+b1_armhf.deb


インストール前準備(ここが今回のキモ。多分)

次に必要なライブラリをインストール。

$ sudo apt install libaio1 libaio-dev libhtml-template-perl libevent-core-2.0-5

さて、ここから「そうだったのか!」と思ったところなんだけど、今のラズパイのOSはDebian 8 jessieってヤツをベースとしたRaspbianなのだそうな。

で、その次のDebian 9 stretchベースのaptリポジトリがあって(!)、そこにはgccの新しいバージョンがあるわけで(!!)、そいつをインストールする必要があるんだって。

つ~わけで、今参照しているjessieリポジトリを一時的にstretchリポジトリに変更する。

$ sudo vi /etc/apt/sources.list
 
  #deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
  deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi

切り替えたらgcc、g++の6をインストールする。

$ sudo apt-get update
$ sudo apt-get install gcc-6 g++-6

インストールが完了したら、jessieに戻しとく。

$ sudo vi /etc/apt/sources.list
 
  deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
  #deb http://mirrordirector.raspbian.org/raspbian/ stretch main contrib non-free rpi

そんでもってupdateしとく。

$ sudo apt-get update

ちなみに、gcc -vってやっても4.7と出て、6とは出てこなかった。update-alternativesでも6系のバージョンは表示されず。分からん。

インストール

debファイルを扱うコマンドはdpkg。redhat系のyumよりどっちかというとrpmに近いのかな。

dpkgコマンドの使い方はこちら。

さて、wgetで取ってきたdebファイルを順にインストールしていく。インストールが終わったら一度リブート。

ちなみに、確かmysql-server-5.7_5.7.18-1_armhf.debのインストール時にmysqlのrootに対するパスワードを設定する場面に出くわす。確かLinuxMintにMySQLを入れた時もそうだった気がする。CentOSだとインスト終わった後にlogみてデフォパス見つけてそれで一度mysqlに入ってsetPasswordしたはずなので、ちょっと慣れない。

$ sudo dpkg -i libmecab2_0.996-3.1_armhf.deb
$ sudo dpkg -i liblz4-1_0.0~r131-2+b1_armhf.deb
$ sudo dpkg -i mysql-common_5.8+1.0.2_all.deb
$ sudo dpkg -i mysql-client-core-5.7_5.7.18-1_armhf.deb
$ sudo dpkg -i mysql-client-5.7_5.7.18-1_armhf.deb
$ sudo dpkg -i mysql-server-core-5.7_5.7.18-1_armhf.deb
$ sudo dpkg -i mysql-server-5.7_5.7.18-1_armhf.deb
$ sudo dpkg -i libmysqlclient20_5.7.18-1_armhf.deb
$ sudo dpkg -i libmysqlclient-dev_5.7.18-1_armhf.deb
$ sudo dpkg -i libmysqld-dev_5.7.18-1_armhf.deb
 
$ sudo reboot now


MySQLの起動

では、MySQLのサービスを起動してみる。そんでもって起動確認。

$ sudo service mysql restart
$ sudo service mysql status
 
● mysql.service - MySQL Community Server
   Loaded: loaded (/lib/systemd/system/mysql.service; enabled)
   Active: active (running) since 水 2017-05-03 01:12:16 JST; 2s ago
  Process: 1906 ExecStartPost=/usr/share/mysql/mysql-systemd-start post (code=exited, status=0/SUCCESS)
  Process: 1896 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
 Main PID: 1905 (mysqld)
   CGroup: /system.slice/mysql.service
           mq1905 /usr/sbin/mysqld
 
 5月 03 01:12:16 mng-svr01 systemd[1]: Started MySQL Community Server.

動いてるぅぅぅ。

では、mysqlに入ってみる。

$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.7.18-1 (Debian)
 
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
 
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>

入れたぁぁぁ。Ver.も5.7.18って表示されてる!・・・ヤバい、泣きそう。

設定

ついでに少しだけ設定をしてみる。

現在の文字コードの設定を見てみる。

mysql> show variables like 'chara%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

うむ、やはりラテン系が混じってる。

一度mysqlから出て、my.cnfに文字コードに関する設定を書き込む。・・・my.cnf、どこだwww

$ sudo find / -name my.cnf
/etc/alternatives/my.cnf
/etc/mysql/my.cnf
/var/lib/dpkg/alternatives/my.cnf

ヤバい、3つも出てきたwwwどうしようwww

経験から言って/etc/mysql/my.cnfが本命のような気がするので、そいつに文字コードに関する設定を書き込む。今回はutf8mb4にする。

$ sudo /etc/mysql/my.cnf
 
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

あれ?2行しかない。なんか、別のcnfファイルをincludeしてるみたい。

どうやら、/etc/mysql/mysql.conf.d/my.cnfが本命っぽい。

つ~か、本当は/etc/mysql/mysql.conf.d/の下に独自の.cnfファイル作ったほうが良いんだろうな。というわけで、rpi-my.cnfを作ってみる。

sudo vi /etc/mysql/mysql.conf.d/rpi-my.cnf
 
[mysqld]
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4

これで、mysqlを再起動してmysqlに入って文字コードを確認してみる。

$ sudo service mysql restart
$ mysql -u root -p
 
mysql> show variables like 'char%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.02 sec)
 
mysql>

ふむ、character_set_systemだけutf8のままだけど、まぁ良いか。

とりあえず、初期時と異なる設定は/etc/mysql/mysql.conf.d/rpi-my.cnfに浮かせておけば良いわけだな。

その他、メモリー周りやらログ周りやら設定が必要なはずだけど、それは追々やっていこう。


トンネルは抜けた!


参考にさせて頂いたサイト


今日のBGM