straightweeds.hatenablog.com

30代のシステムエンジニアが興味のあることだけ書くブログ

RaspberryPiにmysqlをインストール

RaspberryPiへmysql(データベース)を導入しました。

f:id:straightweeds:20170417170339p:plain

前提

mysqlのデータはNFS環境に保存します。 (RaspberryPi SDカードへの書き込みを抑制するため)

お決まり

作業はrootで実施するのでsuしておきます。

$ su -

Installation

Install

  1. 前提パッケージの導入
# apt-get install cmake
# apt-get install libncurses5-dev
# apt-get install bison
  1. ダウンロード
# git clone https://github.com/mysql/mysql-server.git
  1. 移動
# mv mysql-server /var/opt/
  1. cmake
# cd /var/opt/mysql-server
# mkdir release
# cd release/
# cmake .. -DDOWNLOAD_BOOST=1 -DWITH_BOOST=./boost -DENABLE_DOWNLOADS=1 -DDEFAULT_CHARSET=utf8 - DDEFAULT_COLLATION=utf8_general_ci
  1. 前提パッケージのインストール2
# apt-get install gcc-4.7
# apt-get install g++-4.7
# update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.7 47 --slave /usr/bin/g++ g++ /usr/bin/g++-4.7 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.7
# update-alternatives --config gcc
  1. gccのバージョン確認
# gcc -v
  1. make 結構時間がかかります。
# make
  1. install
# make install

Initial Setting

  1. 定義ファイルの作成
# nano /usr/local/mysql/my.cnf
[client]
port            = 3306
socket          = /var/run/mysqld/mysqld.sock
default-character-set=utf8mb4

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr/local/mysql
datadir         = /var/opt/mysqldata
tmpdir          = /tmp
character-set-server=utf8mb4
skip-character-set-client-handshake
bind-address            = 127.0.0.1
  1. 定義ファイルのリンク
# mkdir /etc/mysql
# ln -s /usr/local/mysql/my.cnf /etc/mysql/my.cnf
  1. データ格納先領域のマウント設定
# nano /etc/fstab
NFSサーバIP:/NFSパス   /var/opt/mysqldata    nfs     rsize=32768,wsize=32768,nolock  0       0
  1. データ格納先領域のマウント先作成
# mkdir /var/opt/mysqldata
  1. データ格納先領域のマウント
# mount /var/opt/mysqldata
  1. ユーザ追加
# groupadd mysql
# useradd -r -g mysql mysql
# cd /usr/local/mysql
# chown -R mysql .
# chgrp -R mysql .
# chown -R mysql.mysql /var/opt/mysqldata/
  1. イニシャライズ
# bin/mysqld --initialize --user=mysql

※表示されるパスワードを控える

  1. セットアップ
# bin/mysql_ssl_rsa_setup
# chown -R root .
# chown -R mysql /var/opt/mysqldata
# cp support-files/mysql.server /etc/init.d/mysql
# update-rc.d mysql defaults
# service mysql start
  1. 変数設定
# nano /etc/profile.d/var_mysql.sh
if [ -d "/usr/local/mysql/bin" ] ; then
   PATH="/usr/local/mysql/bin:$PATH"
fi
  1. パスワード変更
# PATH="/usr/local/mysql/bin:$PATH"
# mysqladmin -p -u root password
  1. 動作確認
# mysqlshow -p -u root

gccのバージョン確認

alternative gcc (/usr/bin/gcc を提供) には 3 個の選択肢があります。

選択肢    パス            優先度  状態
\------------------------------------------------------------
  0            /usr/bin/gcc-4.8   48        自動モード
\* 1            /usr/bin/gcc-4.6   46        手動モード
  2            /usr/bin/gcc-4.7   47        手動モード
  3            /usr/bin/gcc-4.8   48        手動モード

現在の選択 [*] を保持するには Enter、さもなければ選択肢の番号のキーを押してください: 2
update-alternatives: /usr/bin/gcc (gcc) を提供するために 手動モード で /usr/bin/gcc-4.7 を使います

参考

 [http://hinakin.main.jp/piapc.htm](http://hinakin.main.jp/piapc.htm)

Usage

データベースの追加

文字コード UTF-8の場合

# mysql -u root -p
# CREATE DATABASE <<データベース名>> DEFAULT CHARACTER SET utf8;

mysqldump

  • バックアップ
# mysqldump -u root -p -t <<対象データベース名>> > <<バックアップファイル名>>
  • リストア
# mysql -u root -p <<対象データベース名>> < <<リストアファイル名>>

外部接続許可

  1. 設定ファイル編集
# nano /etc/mysql/my.cnf
#bind-address            = 127.0.0.1

※添付ファイル参考

  1. 再起動
# service mysql restart
  1. 対象データベースへユーザを追加
# mysql -u root -p
# grant all privileges on <<対象データベース名>>.* to '<<ユーザ名>>'@'<<許可するホストのIP(ワイルドカードは % >>' identified by '<<パスワード>>';

制限ユーザ作成

BK用途(ReadOnly)

  1. 作成
# GRANT SELECT, SHOW VIEW ON *.* TO '<<ユーザ名>>'@'<<許可するホストのIP(ワイルドカードは % >>' IDENTIFIED BY '<<パスワード>>';
# GRANT LOCK TABLES ON *.* TO ''<<ユーザ名>>''@'<<許可するホストのIP(ワイルドカードは % >>' IDENTIFIED BY '<<パスワード>>';
  1. 反映
# FLUSH PRIVILEGES;
  1. 確認
# SHOW GRANTS FOR '<<ユーザ名>>'@'<<許可するホストのIP(ワイルドカードは % >>';

↓気が向いた時でいいのでポチって頂けると幸いです↓