UJP - 技術情報1

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

Raspberry Pi RaspbianにMySQLをインストールしてセットアップする

Raspberry Pi RaspbianにMySQLをインストールしてセットアップする


更新履歴

  • 初版 2016/07/10
  • 更新日 2017/12/04

はじめに

  • MySQLをインストールして,MySQlの起動と終了,そして言語設定を行う.簡単に行うためにapt-getでインストールを行うが,パッケージもたくさんあるので,幾つか選択してみる.

パッケージ一覧の確認

  • apt-cacheコマンドでmysql関連パッケージを表示できる.
       ujpadmin@commet:~ $ apt-cache search mysql|more
  • とても多い.
       ujpadmin@commet:~ $ apt-cache search mysql|wc -l
       385
       ujpadmin@commet:~ $
  • いくつかピックアップしてみる.
  • MySQLの5.5を指定する場合.このバージョンは現時点の安定板になるのかな.現時点で5.7が最新.
       mysql-server-5.5 - MySQL database server binaries and system database setup
       mysql-server-core-5.5 - MySQL database server binaries
       mysql-client-5.5 - MySQL database client binaries
  • 最新のMySQLにする場合.
       mysql-server - MySQL database server (metapackage depending on the latest version)
  • これは必要だと思われ.
       mysql-common - MySQL database common files, e.g. /etc/mysql/my.cnf
  • 各種言語からの接続で必要そうなクライアントライブラリ.
       libmysql-java - Java database (JDBC) driver for MySQL
       libmysql6.4-cil - MySQL database connector for CLI
       libmysqlclient-dev - MySQL database development files
       libmysqlclient18 - MySQL database client library
  • 便利そうなツール.
       mydumper - High-performance MySQL backup tool
       mytop - top like query monitor for MySQL

apt-get install mysql-serverでインストール

  • まずは,最新版を入れたいので,mysql-serverを指定する.
       ujpadmin@commet:~ $ sudo apt-get install mysql-server
       パッケージリストを読み込んでいます... 完了
       依存関係ツリーを作成しています
       状態情報を読み取っています... 完了
       以下の追加パッケージがインストールされます:
         libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18 libterm-readkey-perl
         mysql-client-5.5 mysql-common mysql-server-5.5 mysql-server-core-5.5
       提案パッケージ:
         libclone-perl libmldbm-perl libnet-daemon-perl libsql-statement-perl libipc-sharedcache-perl mailx
         tinyca
       以下のパッケージが新たにインストールされます:
         libaio1 libdbd-mysql-perl libdbi-perl libhtml-template-perl libmysqlclient18 libterm-readkey-perl
         mysql-client-5.5 mysql-common mysql-server mysql-server-5.5 mysql-server-core-5.5
       アップグレード: 0 個、新規インストール: 11 個、削除: 0 個、保留: 47 個。
       8,121 kB のアーカイブを取得する必要があります。
       この操作後に追加で 88.8 MB のディスク容量が消費されます。
       続行しますか? [Y/n]
  • MySQL5.5がインストールされる模様.このまま進める.
       続行しますか? [Y/n] y
       取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main libaio1 armhf 0.3.110-1 [9,228 B]
       取得:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main mysql-common all 5.5.44-0+deb8u1 [74.3 kB]
       取得:3 http://mirrordirector.raspbian.org/raspbian/ jessie/main libmysqlclient18 armhf 5.5.44-0+deb8u1 [616 kB]
       取得:4 http://mirrordirector.raspbian.org/raspbian/ jessie/main libdbi-perl armhf 1.631-3+b1 [807 kB]
       取得:5 http://mirrordirector.raspbian.org/raspbian/ jessie/main libdbd-mysql-perl armhf 4.028-2+b1 [112 kB]
       取得:6 http://mirrordirector.raspbian.org/raspbian/ jessie/main libterm-readkey-perl armhf 2.32-1+b2 [26.1 kB]
       取得:7 http://mirrordirector.raspbian.org/raspbian/ jessie/main mysql-client-5.5 armhf 5.5.44-0+deb8u1 [1,442 kB]
       取得:8 http://mirrordirector.raspbian.org/raspbian/ jessie/main mysql-server-core-5.5 armhf 5.5.44-0+deb8u1 [3,309 kB]
       取得:9 http://mirrordirector.raspbian.org/raspbian/ jessie/main mysql-server-5.5 armhf 5.5.44-0+deb8u1 [1,586 kB]
       取得:10 http://mirrordirector.raspbian.org/raspbian/ jessie/main libhtml-template-perl all 2.95-1 [66.8 kB]
       取得:11 http://mirrordirector.raspbian.org/raspbian/ jessie/main mysql-server all 5.5.44-0+deb8u1 [72.6 kB]
       8,121 kB を 12秒 で取得しました (638 kB/s)
       パッケージを事前設定しています ...
       以前に未選択のパッケージ libaio1:armhf を選択しています。
       (データベースを読み込んでいます ... 現在 119132 個のファイルとディレクトリがインストールされています。)
       .../libaio1_0.3.110-1_armhf.deb を展開する準備をしています ...
       libaio1:armhf (0.3.110-1) を展開しています...
       以前に未選択のパッケージ mysql-common を選択しています。
       .../mysql-common_5.5.44-0+deb8u1_all.deb を展開する準備をしています ...
       mysql-common (5.5.44-0+deb8u1) を展開しています...
       以前に未選択のパッケージ libmysqlclient18:armhf を選択しています。
       .../libmysqlclient18_5.5.44-0+deb8u1_armhf.deb を展開する準備をしています ...
       libmysqlclient18:armhf (5.5.44-0+deb8u1) を展開しています...
       以前に未選択のパッケージ libdbi-perl を選択しています。
       .../libdbi-perl_1.631-3+b1_armhf.deb を展開する準備をしています ...
       libdbi-perl (1.631-3+b1) を展開しています...
       以前に未選択のパッケージ libdbd-mysql-perl を選択しています。
       .../libdbd-mysql-perl_4.028-2+b1_armhf.deb を展開する準備をしています ...
       libdbd-mysql-perl (4.028-2+b1) を展開しています...
       以前に未選択のパッケージ libterm-readkey-perl を選択しています。
       .../libterm-readkey-perl_2.32-1+b2_armhf.deb を展開する準備をしています ...
       libterm-readkey-perl (2.32-1+b2) を展開しています...
       以前に未選択のパッケージ mysql-client-5.5 を選択しています。
       .../mysql-client-5.5_5.5.44-0+deb8u1_armhf.deb を展開する準備をしています ...
       mysql-client-5.5 (5.5.44-0+deb8u1) を展開しています...
       以前に未選択のパッケージ mysql-server-core-5.5 を選択しています。
       .../mysql-server-core-5.5_5.5.44-0+deb8u1_armhf.deb を展開する準備をしています ...
       mysql-server-core-5.5 (5.5.44-0+deb8u1) を展開しています...
       man-db (2.7.0.2-5) のトリガを処理しています ...
       mysql-common (5.5.44-0+deb8u1) を設定しています ...
       以前に未選択のパッケージ mysql-server-5.5 を選択しています。
       (データベースを読み込んでいます ... 現在 119497 個のファイルとディレクトリがインストールされています。)
       .../mysql-server-5.5_5.5.44-0+deb8u1_armhf.deb を展開する準備をしています ...
       mysql-server-5.5 (5.5.44-0+deb8u1) を展開しています...
       以前に未選択のパッケージ libhtml-template-perl を選択しています。
       .../libhtml-template-perl_2.95-1_all.deb を展開する準備をしています ...
       libhtml-template-perl (2.95-1) を展開しています...
       以前に未選択のパッケージ mysql-server を選択しています。
       .../mysql-server_5.5.44-0+deb8u1_all.deb を展開する準備をしています ...
       mysql-server (5.5.44-0+deb8u1) を展開しています...
       man-db (2.7.0.2-5) のトリガを処理しています ...
       systemd (215-17+deb8u4) のトリガを処理しています ...
       libaio1:armhf (0.3.110-1) を設定しています ...
       libmysqlclient18:armhf (5.5.44-0+deb8u1) を設定しています ...
       libdbi-perl (1.631-3+b1) を設定しています ...
       libdbd-mysql-perl (4.028-2+b1) を設定しています ...
       libterm-readkey-perl (2.32-1+b2) を設定しています ...
       mysql-client-5.5 (5.5.44-0+deb8u1) を設定しています ...
       mysql-server-core-5.5 (5.5.44-0+deb8u1) を設定しています ...
       mysql-server-5.5 (5.5.44-0+deb8u1) を設定しています ...
       libhtml-template-perl (2.95-1) を設定しています ...
       mysql-server (5.5.44-0+deb8u1) を設定しています ...
       libc-bin (2.19-18+deb8u4) のトリガを処理しています ...
       systemd (215-17+deb8u4) のトリガを処理しています ...
       ujpadmin@commet:~ $
  • systemdというinitデーモンが気になる...
  • 途中,3回ほどMySQLのrootユーザのパスワードを設定しろと次の様な画面が出てくる.
embedded image
  • 今回な何も設定していない.設定してないから何度も出てくるのだろうと思う.

MySQLのプロセスを確認

  • インストールが終わった途端に,MySQLが起動しているはずなのでプロセスを確認.
       ujpadmin@commet:~ $ ps -ef|grep mysqld
       root     16243     1  0 12:48 ?        00:00:00 /bin/sh /usr/bin/mysqld_safe
       mysql    16591 16243  0 12:48 ?        00:00:04 /usr/sbin/mysqld --basedir=/usr --datadir=/var/lib/mysql
        --plugin-dir=/usr/lib/mysql/plugin --user=mysql --log-error=/var/log/mysql/error.log --pid-
       file=/var/run/mysqld/mysqld.pid --socket=/var/run/mysqld/mysqld.sock --port=3306
       ujpadmin 17775   782  0 13:52 pts/0    00:00:00 grep --color=auto mysqld
       ujpadmin@commet:~ $
  • 3306ポートで接続できる様に起動している模様.

MySQLモニターで接続

       ujpadmin@commet:~ $ which mysql
       /usr/bin/mysql
       ujpadmin@commet:~ $ mysql -uroot
       Welcome to the MySQL monitor.  Commands end with ; or \g.
       Your MySQL connection id is 43
       Server version: 5.5.44-0+deb8u1 (Raspbian)
       Copyright (c) 2000, 2015, 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>
  • 接続できました.接続を切ります.
       mysql> quit
       Bye
       ujpadmin@commet:~ $
  • 正常に切断.

MySQLの停止と起動

  • init.dに登録してあるスクリプトで停止する.
       ujpadmin@commet:~ $ /etc/init.d/mysql stop
       [....] Stopping mysql (via systemctl): mysql.serviceFailed to stop mysql.service:
        Access denied failed!
       ujpadmin@commet:~ $
  • 権限がなくて起動できない.sudoで停止してプロセスが無いことを確認する.
       ujpadmin@commet:~ $ sudo /etc/init.d/mysql stop
       [ ok ] Stopping mysql (via systemctl): mysql.service.
       ujpadmin@commet:~ $ ps -ef|grep mysql
       ujpadmin 18849   782  0 14:06 pts/0    00:00:00 grep --color=auto mysql
       ujpadmin@commet:~ $
  • 正常に停止できた.
  • 次に起動する.

ujpadmin@commet:~ $ sudo /etc/init.d/mysql stop

[ ok ] Stopping mysql (via systemctl): mysql.service.

ujpadmin@commet:~ $ sudo /etc/init.d/mysql start

[ ok ] Starting mysql (via systemctl): mysql.service.

ujpadmin@commet:~ $

文字コードを設定する

  • MySQLに接続して現在の文字コードを確認.
       ujpadmin@commet:~ $ mysql -uroot --silent
       mysql> show variables like 'char%';
       +--------------------------+----------------------------+
Variable_nameValue
       +--------------------------+----------------------------+
character_set_clientutf8
character_set_connectionutf8
character_set_databaselatin1
character_set_filesystembinary
character_set_resultsutf8
character_set_serverlatin1
character_set_systemutf8
character_sets_dir/usr/share/mysql/charsets/
       +--------------------------+----------------------------+
       8 rows in set (0.00 sec)
       mysql>
  • databaseがlatin1になっているので,これを日本語に変更する.日本語に変更するには,my.cnfファイルを変更する.
       mysql> quit
       ujpadmin@commet:~ $ sudo vi /etc/mysql/my.cnf
  • [mysqld]セクションに言語設定を追加する.
       [mysqld]
       character-set-server=utf8
       #
       # * 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
  • 設定を反映させるために,MySQLを再起動する
       ujpadmin@commet:~ $ sudo /etc/init.d/mysql restart
       [ ok ] Restarting mysql (via systemctl): mysql.service.
       ujpadmin@commet:~ $
  • 再起動したら,言語設定が変更されているか確認.
       ujpadmin@commet:~ $ mysql -uroot --silent
       mysql>
       mysql> show variables like 'character_set_database';
       Variable_name	Value
       character_set_database	utf8
       mysql>
  • 設定が反映された事が確認できた.

mytop

  • Windowsのタスクマネージャ,MacOS Xのアクティビティモニターのような感じで,負荷の高いプロセス一覧を見るtopコマンドというものがあるが,それのMySQL版.これをインストールして使ってみる.

mytopをインストール

       ujpadmin@commet:~ $ sudo apt-get install mytop
       パッケージリストを読み込んでいます... 完了
       依存関係ツリーを作成しています
       状態情報を読み取っています... 完了
       以下の追加パッケージがインストールされます:
         libconfig-inifiles-perl liblist-moreutils-perl
       以下のパッケージが新たにインストールされます:
         libconfig-inifiles-perl liblist-moreutils-perl mytop
       アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 47 個。
       130 kB のアーカイブを取得する必要があります。
       この操作後に追加で 357 kB のディスク容量が消費されます。
       続行しますか? [Y/n] y
       取得:1 http://mirrordirector.raspbian.org/raspbian/ jessie/main liblist-moreutils-perl armhf 0.33-2+b1 [40.9 kB]
       取得:2 http://mirrordirector.raspbian.org/raspbian/ jessie/main libconfig-inifiles-perl all 2.83-3 [54.0 kB]
       取得:3 http://mirrordirector.raspbian.org/raspbian/ jessie/main mytop all 1.9.1-2 [35.3 kB]
       130 kB を 2秒 で取得しました (63.7 kB/s)
       以前に未選択のパッケージ liblist-moreutils-perl を選択しています。
       (データベースを読み込んでいます ... 現在 119599 個のファイルとディレクトリがインストールされています。)
       .../liblist-moreutils-perl_0.33-2+b1_armhf.deb を展開する準備をしています ...
       liblist-moreutils-perl (0.33-2+b1) を展開しています...
       以前に未選択のパッケージ libconfig-inifiles-perl を選択しています。
       .../libconfig-inifiles-perl_2.83-3_all.deb を展開する準備をしています ...
       libconfig-inifiles-perl (2.83-3) を展開しています...
       以前に未選択のパッケージ mytop を選択しています。
       .../archives/mytop_1.9.1-2_all.deb を展開する準備をしています ...
       mytop (1.9.1-2) を展開しています...
       man-db (2.7.0.2-5) のトリガを処理しています ...
       liblist-moreutils-perl (0.33-2+b1) を設定しています ...
       libconfig-inifiles-perl (2.83-3) を設定しています ...
       mytop (1.9.1-2) を設定しています ...
       ujpadmin@commet:~ $
  • インストールされたファイルを確認.
       ujpadmin@commet:~ $ dpkg -L mytop
       /.
       /usr
       /usr/share
       /usr/share/man
       /usr/share/man/man1
       /usr/share/man/man1/mytop.1p.gz
       /usr/share/doc
       /usr/share/doc/mytop
       /usr/share/doc/mytop/changelog.gz
       /usr/share/doc/mytop/copyright
       /usr/share/doc/mytop/mytop.sample.conf
       /usr/share/doc/mytop/changelog.Debian.gz
       /usr/bin
       /usr/bin/mytop
       ujpadmin@commet:~ $

mytopを使ってみる

  • mysqlモニタで接続状態を作って,mytopコマンドで確認してみる.
       ujpadmin@commet:~ $ mysql -uroot --silent &
       [1] 22054
       ujpadmin@commet:~ $
  • mytopコマンドを実行.
       ujpadmin@commet:~ $ mytop
  • 次の様な画面が表示される.
       MySQL on localhost (5.5.44)          load 0.00 0.00 0.00 1/203 22086 up 0+00:11:50 [14:25:16]
        Queries: 162.0    qps:    0 Slow:     0.0         Se/In/Up/De(%):    46/00/00/00
        Key Efficiency: 100.0%  Bps in/out:  13.3/204.0
              Id      User         Host/IP         DB       Time    Cmd    State Query
              --      ----         -------         --       ----    ---    ----- ----------
              48      root       localhost                    89  Sleep
              49      root       localhost                     0  Query          show full processlist
  • このID48が先ほどのMySQLモニタで,49はshown full professlistを実行しているmytopコマンドの接続とわかる.
  • キーボードからqを入力すれば,mytopを停止できる.

広告スペース
Google