パッケージ一覧の確認
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ユーザのパスワードを設定しろと次の様な画面が出てくる.
今回な何も設定していない.設定してないから何度も出てくるのだろうと思う.
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_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/ | +--------------------------+----------------------------+ 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を停止できる.