1.インストール

https://www.raspberrypi.org/downloads/

から、Ubuntu Mate をダウンロード、解凍(7zipが便利)して、image ファイルを、micro  SD カードに焼く(Win32 Disk Imagerが便利)。Rasbperry Pi にさして起動。

2.SDカードの全容量を認識させる

https://www.raspberrypi.org/forums/viewtopic.php?f=91&t=110785

32GB のSDカードを利用したのだが、7.2GB しか割り当てられていない。

root@pi:/home/piroto# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       7.2G  3.9G  3.4G  54% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           463M  404K  463M   1% /dev/shm
tmpfs           463M   13M  451M   3% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           463M     0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1   64M   20M   45M  32% /boot
tmpfs            93M   44K   93M   1% /run/user/1000

http://raspberrypi.stackexchange.com/questions/37739/ubuntu-mate-not-using-all-its-storage

ルート(sudo su)もしくは sudo でFDISK を起動 (fdisk /dev/mmcblk0)

root@pi:/dev# ls -l | grep "mmc*"
brw-rw----  1 root disk    179,   0  4月 21  2016 mmcblk0
brw-rw----  1 root disk    179,   1  4月 21  2016 mmcblk0p1
brw-rw----  1 root disk    179,   2  4月 21  2016 mmcblk0p2
root@pi:/dev# fdisk /dev/mmcblk0

Welcome to fdisk (util-linux 2.27.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): m

Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table

内容の確認(p)

Command (m for help): p
Disk /dev/mmcblk0: 29 GiB, 31117541376 bytes, 60776448 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x580a66ff

Device         Boot  Start      End  Sectors  Size Id Type
/dev/mmcblk0p1 *      2048   133119   131072   64M  c W95 FAT32 (LBA)
/dev/mmcblk0p2      133120 15728639 15595520  7.4G 83 Linux

削除から再作成(d – 2 – n – p – 2 – enter – enter – w) し、reboot

Command (m for help): d
Partition number (1,2, default 2): 2

Partition 2 has been deleted.

Command (m for help): 2
2: unknown command

Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (133120-60776447, default 133120):
Last sector, +sectors or +size{K,M,G,T,P} (133120-60776447, default 60776447):

Created a new partition 2 of type 'Linux' and of size 28.9 GiB.

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.: Device or resource busy

The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

reboot あと、パーティションを拡張

root@pi:/home/piroto# resize2fs /dev/mmcblk0p2
resize2fs 1.42.13 (17-May-2015)
Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/mmcblk0p2 is now 7580416 (4k) blocks long.

/ パーティションが、29GB と認識された。

root@pi:/home/piroto# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        29G  3.9G   25G  14% /
devtmpfs        459M     0  459M   0% /dev
tmpfs           463M  200K  463M   1% /dev/shm
tmpfs           463M  6.8M  457M   2% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           463M     0  463M   0% /sys/fs/cgroup
/dev/mmcblk0p1   64M   20M   45M  32% /boot
tmpfs            93M   28K   93M   1% /run/user/1000

MySQL5.7 インストールと初期設定

以前受けたOracleのMySQL講座資料から抜粋。

http://downloads.mysql.com/presentations/20151207_01_MySQL_Install_Beginners.pdf

設定

  • MySQLサーバーの設定はシステム変数で行う
  • 設定しなかったシステム変数にはデフォルト値が設定される
  • 設定方法
    • オプションファイル(/etc/my.cnf)で設定
      • デフォルトでは複数の場所のファイルを読み込み、後勝ちとなる
      • ファイルを読み込む順序は msqld –verbose –help で確認できる (eg Default options are read from the following files in the given order:/etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf)
    • 一時的な設定(SET [GLOBAL|SESSION] <variable>=<value>)
  • 確認方法
    • SHOW [GLOBAL|SESSION] VARIABLES LIKE ‘%<システム変数名>%’;
    • SELECT @@global.<システム変数名>, @@session.<システム変数名>;

管理者ユーザーパスワード

  • root ユーザーの初期パスワードにはランダム文字列が設定され、ログイン後パスワードを変更するまでは何もできない。
  • DB初期化処理後、エラーログもしくはコンソールからパスワードを確認する。
    • エラーログの場所(/etc/my.cnf 確認 eg- log-error=/var/log/mysqld.log)
    • 該当行を検索 (cat /var/log/mysqld.log | grep 'password is generated')
  • パスワードの変更 (SET PASSWORD FOR ‘ユーザー名’@’ホスト名’=’変更後のパスワード’;)
  • パスワード検証プラグイン
    • インストール方法によりデフォルトで有効になっている(yum,rpm など)
      • デフォルトのポリシー(8文字以上、英語大文字/小文字/数字/特殊文字 を1文字以含む)
    • 有効化:mysql> INSTALL PLUGIN validate_password SONAME 'validate_password.so';
    • 無効化:mysql> UNINSTALL PLUGIN validate_password;
    • 確認:mysql> SHOW VARIABLES LIKE 'validate_password%';

注意すべきシステム変数

http://downloads.mysql.com/presentations/20151030_05_MySQL-Parameter-comparison.pdf

パラメータ デフォルト 推奨 説明
default_password_lifetime 360 0 パスワード有効期限。期限が切れるとログインできなくなる。
log_timestamps UTC SYSTEM UTCでは日本時間が把握しにくい。
sql_mode ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZE RO, NO_AUTO_CREATE_USER, NO_ENGINE_SUBSTITUTION N/A 設定 によって、同じSQLがエラーになる/ならない、などの違いが出る。書籍やネット等で知ったSQLを実行してエラーになった場合など原因となっている可能性の確認
innodb_strict_mode ON N/A 書籍やネット等で知ったSQLを実行してエラーになった場合など原因となっている可能性の確認
secure_file_priv 環境依存 NULL もしくは 任意のディレクトリ 値が設定されていないと、OS上のmysql実行ユーザーが権限を 持つ全てのディレクトリ/ファイルに対して操作が出来てしまう。NULLを設定した場合は、OS上のファイルの読書きを全て 禁止できる。

ステータス変数

  • MySQLサーバーの動作を監視するために、ステータス変数を確認する。
    • SHOW [GLOBAL|SESSION] STAUTS ‘%<ステータス変数名>%’;
  • 特定のクエリについて調査
    • FLUSH STATUS; <クエリ実行>; SHOW STATUS;
  • 定期的に確認(15秒間隔で差分のみ表示)
      • mysqladmin –u –p … ex –i 15 –r | grep –v ‘0’

各種ログ

  • エラーログ
    • 起動/停止、サーバーサイドエラー関連
  • バイナリログ
    • 更新系の処理内容のみ記録
    • バイナリ形式mysqlbinlogコマンドでテキスト化可能
    • デフォルト非出力(log_bin, server_id を設定し出力)
  • 一般クエリログ
    • クライアント接続、実行されたすべてのSQL
    • デフォルト非出力(general_logを設定し出力)
    • サーバー稼働中に出力/非出力切り替え可
    • テーブルへも出力可能
  • スロークエリログ
    • 実行時間が指定した時間以上のクエリを出力
    • デフォルト非出力(log_slow_queries を設定し出力)
    • long_query_time:秒単位で指定,log_queries_not_using_index:インデックス未使用クエリ全出力

起動停止

  • 起動
    • mysqld –defaults-file=<my.cnfへのパス> &
  • 停止
    • mysqladmin –u root –p shutdown

接続

  • mysql –u <ユーザー名> –p
  • リモートホストを指定
    • mysql –u <ユーザー名> –h <ホスト名> –P <ポート番号> –p

データベース(スキーマ)

  • 作成
    • CREATE DATABASE <データベース名>;
  • 確認
    • SHOW DATABASES;

データ型

講座の講師をやられていた方の著作

MySQL5.7 を CentOS 7 にインストール

MySQL Yum リポジトリを使用して MySQL を Linux にインストールするを参考にしながら、CentOS7に Yum を利用してMySQLのインストールを行う。

1.Yum リポジトリ

1.1 Yum リポジトリの取得

Download MySQL Yum Repository から、該当のリポジトリを探す。

mysql_inst01

RHEL と CentOS のメジャーバージョンは対応しているので、RHEL7のリポジトリを選択し、ダウンロードボタン。

遷移先の画面で、ログインを求められるが、左下に、直接ダウンロードするURLがリンク(No thanks just start my download) されているので、URLをコピーする。

mysql_inst02

インストール先のサーバーに接続し適当なディレクトリに上記URLからwgetでリポジトリRPMをダウンロード

$ wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

1.2 Yumリポジトリのインストール

$ su
パスワード:
# yum localinstall mysql57-community-release-el7-9.noarch.rpm

mysql_inst03

MySQL Yum リポジトリのすべてのサブリポジトリを表示し、どれが有効でどれが無効かを確認。デフォルトで最新GAが有効になっている。

# yum repolist all | grep mysql
mysql-connectors-community/x86_64 MySQL Connectors Community         有効:    30
mysql-connectors-community-source MySQL Connectors Community - Sourc 無効
mysql-tools-community/x86_64      MySQL Tools Community              有効:    40
mysql-tools-community-source      MySQL Tools Community - Source     無効
mysql-tools-preview/x86_64        MySQL Tools Preview                無効
mysql-tools-preview-source        MySQL Tools Preview - Source       無効
mysql55-community/x86_64          MySQL 5.5 Community Server         無効
mysql55-community-source          MySQL 5.5 Community Server - Sourc 無効
mysql56-community/x86_64          MySQL 5.6 Community Server         無効
mysql56-community-source          MySQL 5.6 Community Server - Sourc 無効
mysql57-community/x86_64          MySQL 5.7 Community Server         有効:   164
mysql57-community-source          MySQL 5.7 Community Server - Sourc 無効
mysql80-community/x86_64          MySQL 8.0 Community Server         無効
mysql80-community-source          MySQL 8.0 Community Server - Sourc 無効
  • 最新の GA シリーズの最新のリリースをインストールする場合は、構成は不要
  • 最新の GA シリーズ以外の特定のシリーズの最新リリースをインストールするには、インストールコマンドを実行する前に、最新の GA シリーズのサブリポジトリを無効にし、その特定のシリーズのサブリポジトリを有効にする。
  • 使用しているプラットフォームで yum-config-manager がサポートされている場合は、次のコマンドを発行することで実行可能
$ sudo yum-config-manager --disable mysql56-community
$ sudo yum-config-manager --enable mysql57-community-dmr

2.MySQLのインストール

2.1 Yumでインストール

# yum install mysql-community-server

2.2 MySQLの起動

# systemctl start  mysqld.service

2.3 接続

2.3.1 root パスワード

root パスワードが分からない。5.6 のときは、/root/.mysql_secret に出力されていたが、存在していない。

[root@localhost ~]# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

MySQL 5.7をインストールしたら出てきたERROR 1045 (28000)の対処法

ログに出力されているようだ。パスワード部分をコピーしてログイン

[root@localhost ~]# cat /var/log/mysqld.log | grep 'password is generated'
2017-01-02T14:16:14.031813Z 1 [Note] A temporary password is generated for root@localhost: eOq=?fDX5kyy

mysql5.7でパスワードを変更する

2.3.2 セキュリティ設定

mysql_secure_installation を実行しセキュリティーポリシーを設定

[root@localhost ~]# mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root:
The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) :

 ... 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? (Press y|Y for Yes, any other key for No) : y
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? (Press y|Y for Yes, any other key for No) :

 ... skipping.
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? (Press y|Y for Yes, any other key for No) :

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

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

2.3.3 CentOS ファイアーウォール設定

外部から接続できないので、3306ポートを開ける

# firewall-cmd --permanent --zone=public --add-port=3306/tcp
success
# firewall-cmd --reload
success

2.3.4 別PCの MySQL Workbench から接続

接続先ホストが許可されていない。

mysql_inst04

アクセス拒否のトラブルシュート

アクセス制御、ステージ 1: 接続の検証

ID チェックは、user テーブルの 3 つのスコープカラム (HostUserPassword) を使用して実施されます。サーバーは、一部の user テーブル行の Host および User カラムがクライアントホスト名およびユーザー名と一致し、その行に指定されているパスワードがクライアントから提供された場合のみ、接続を受け入れます。許容可能な Hostおよび User 値についてのルールは、セクション6.2.3「アカウント名の指定」にあります。

任意のホストから接続できる、app ユーザー を作成。

パスワードが必須かつ、英大文字、小文字、数字、記号を含むパスワードしか受け付けてくれない。

mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> create user 'app'@'%';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
mysql> create user 'app'@'%' identified by '*****';
Query OK, 0 rows affected (0.02 sec)
mysql> select user,host from user;
+-----------+-----------+
| user      | host      |
+-----------+-----------+
| app       | %         |
| mysql.sys | localhost |
| root      | localhost |
+-----------+-----------+
3 rows in set (0.00 sec)

接続成功

mysql_inst05

2.3.5 ユーザーに権限付与

管理者権限を付与して、Workbenchから接続

mysql> grant all privileges on *.* to 'root'@'%' identified by '********' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql_inst06