20191021のMySQLに関する記事は13件です。

CentOS 7にMySQL 8.0をインストール(SCL)

はじめに

Software Collection(SCL)を利用してCentOS7にMySQL8.0をインストール
親記事:MySQL, MariaDBの各種インストール方法とEOLまとめ - Qiita
参考:Quick Start — Software Collections

サポート

本手法で導入した場合、Red Hat Software Collections Product Life Cycle - Red Hat Customer Portalより、2023-04がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

LOG

レポジトリ登録

# yum install -y centos-release-scl

インストール

# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

# yum install -y rh-mysql80
# scl enable rh-mysql80 bash
... 略

mysql起動/停止

# systemctl start rh-mysql80-mysqld
# systemctl status rh-mysql80-mysqld
● rh-mysql80-mysqld.service - MySQL 8.0 database server
   Loaded: loaded (/usr/lib/systemd/system/rh-mysql80-mysqld.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-10-21 14:48:30 UTC; 1s ago
  Process: 412 ExecStartPost=/usr/bin/scl enable $RH_MYSQL80_SCLS_ENABLED -- /opt/rh/rh-mysql80/root/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
  Process: 280 ExecStartPre=/usr/bin/scl enable $RH_MYSQL80_SCLS_ENABLED -- /opt/rh/rh-mysql80/root/usr/libexec/mysql-prepare-db-dir %n (code=exited, status=0/SUCCESS)
  Process: 252 ExecStartPre=/usr/bin/scl enable $RH_MYSQL80_SCLS_ENABLED -- /opt/rh/rh-mysql80/root/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
  Process: 246 ExecStartPre=/usr/bin/scl enable $RH_MYSQL80_SCLS_ENABLED -- /usr/bin/scl_enabled rh-mysql80 (code=exited, status=0/SUCCESS)
 Main PID: 367 (mysqld)
   Status: "Server is operational"
   CGroup: /docker/4c8c60bc999ed28314e7cae02bd0fc503fa4b803b08a98137ccb180e43246168/system.slice/rh-mysql80-mysqld.service
           mq367 /opt/rh/rh-mysql80/root/usr/libexec/mysqld --basedir=/opt/rh/rh-mysql80/root/usr
           ? 367 /opt/rh/rh-mysql80/root/usr/libexec/mysqld --basedir=/opt/rh/rh-mysql80/root/usr

Oct 21 14:48:04 4c8c60bc999e systemd[1]: Starting MySQL 8.0 database server...
Oct 21 14:48:05 4c8c60bc999e scl[280]: Initializing MySQL database
Oct 21 14:48:30 4c8c60bc999e systemd[1]: Started MySQL 8.0 database server.
# systemctl stop rh-mysql80-mysqld
# systemctl status rh-mysql80-mysqld
● rh-mysql80-mysqld.service - MySQL 8.0 database server
   Loaded: loaded (/usr/lib/systemd/system/rh-mysql80-mysqld.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

Oct 21 14:48:04 4c8c60bc999e systemd[1]: Starting MySQL 8.0 database server...
Oct 21 14:48:05 4c8c60bc999e scl[280]: Initializing MySQL database
Oct 21 14:48:30 4c8c60bc999e systemd[1]: Started MySQL 8.0 database server.
Oct 21 14:48:47 4c8c60bc999e systemd[1]: Stopping MySQL 8.0 database server...
Oct 21 14:48:48 4c8c60bc999e systemd[1]: Stopped MySQL 8.0 database server.

mysql自動起動設定/設定解除

# systemctl enable rh-mysql80-mysqld
Created symlink from /etc/systemd/system/multi-user.target.wants/rh-mysql80-mysqld.service to /usr/lib/systemd/system/rh-mysql80-mysqld.service.
# systemctl list-unit-files --type=service |grep mysql
rh-mysql80-mysqld.service              enabled
rh-mysql80-mysqld@.service             disabled
# systemctl disable rh-mysql80-mysqld
Removed symlink /etc/systemd/system/multi-user.target.wants/rh-mysql80-mysqld.service.
# systemctl list-unit-files --type=service |grep mysql
rh-mysql80-mysqld.service              disabled
rh-mysql80-mysqld@.service             disabled

各種確認

# systemctl start rh-mysql80-mysqld
# mysql -u root -e 'select version();'
+-----------+
| version() |
+-----------+
| 8.0.17    |
+-----------+
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CentOS 7にMySQL 5.7をインストール(SCL)

はじめに

Software Collection(SCL)を利用してCentOS7にMySQL5.7をインストール
親記事:MySQL, MariaDBの各種インストール方法とEOLまとめ - Qiita
参考:Quick Start — Software Collections

サポート

本手法で導入した場合、Red Hat Software Collections Product Life Cycle - Red Hat Customer Portalより、2019-11がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

LOG

レポジトリ登録

# yum install -y centos-release-scl

インストール

# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

# yum install -y rh-mysql57
# scl enable rh-mysql57 bash
... 略

mysql起動/停止

# systemctl start rh-mysql57-mysqld
# systemctl status rh-mysql57-mysqld
● rh-mysql57-mysqld.service - MySQL 5.7 database server
   Loaded: loaded (/usr/lib/systemd/system/rh-mysql57-mysqld.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-10-21 14:41:23 UTC; 2s ago
  Process: 374 ExecStartPost=/usr/bin/scl enable $RH_MYSQL57_SCLS_ENABLED -- /opt/rh/rh-mysql57/root/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
  Process: 341 ExecStart=/opt/rh/rh-mysql57/root/usr/libexec/mysqld-scl-helper enable $RH_MYSQL57_SCLS_ENABLED -- /opt/rh/rh-mysql57/root/usr/libexec/mysqld --daemonize --basedir=/opt/rh/rh-mysql57/root/usr --pid-file=/var/run/rh-mysql57-mysqld/mysqld.pid (code=exited, status=0/SUCCESS)
  Process: 272 ExecStartPre=/usr/bin/scl enable $RH_MYSQL57_SCLS_ENABLED -- /opt/rh/rh-mysql57/root/usr/libexec/mysql-prepare-db-dir %n (code=exited, status=0/SUCCESS)
  Process: 244 ExecStartPre=/usr/bin/scl enable $RH_MYSQL57_SCLS_ENABLED -- /opt/rh/rh-mysql57/root/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
  Process: 238 ExecStartPre=/usr/bin/scl enable $RH_MYSQL57_SCLS_ENABLED -- /usr/bin/scl_enabled rh-mysql57 (code=exited, status=0/SUCCESS)
 Main PID: 346 (mysqld)
   CGroup: /docker/9b923d2bfd11f4560910084714df4eaaf5cb9d71beed1f4e226ed570f9127ecd/system.slice/rh-mysql57-mysqld.service
           mq346 /opt/rh/rh-mysql57/root/usr/libexec/mysqld --daemonize --basedir=/opt/rh/rh-mysql57/root/u...
           ? 346 /opt/rh/rh-mysql57/root/usr/libexec/mysqld --daemonize --basedir=/opt/rh/rh-mysql57/root/u...

Oct 21 14:41:13 9b923d2bfd11 systemd[1]: Starting MySQL 5.7 database server...
Oct 21 14:41:13 9b923d2bfd11 scl[272]: Initializing MySQL database
Oct 21 14:41:23 9b923d2bfd11 systemd[1]: Started MySQL 5.7 database server.
# systemctl stop rh-mysql57-mysqld
# systemctl status rh-mysql57-mysqld
● rh-mysql57-mysqld.service - MySQL 5.7 database server
   Loaded: loaded (/usr/lib/systemd/system/rh-mysql57-mysqld.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

Oct 21 14:41:13 9b923d2bfd11 systemd[1]: Starting MySQL 5.7 database server...
Oct 21 14:41:13 9b923d2bfd11 scl[272]: Initializing MySQL database
Oct 21 14:41:23 9b923d2bfd11 systemd[1]: Started MySQL 5.7 database server.
Oct 21 14:41:47 9b923d2bfd11 systemd[1]: Stopping MySQL 5.7 database server...
Oct 21 14:41:49 9b923d2bfd11 systemd[1]: Stopped MySQL 5.7 database server.

mysql自動起動設定/設定解除

# systemctl enable rh-mysql57-mysqld
Created symlink from /etc/systemd/system/multi-user.target.wants/rh-mysql57-mysqld.service to /usr/lib/systemd/system/rh-mysql57-mysqld.service.
# systemctl list-unit-files --type=service |grep mysql
rh-mysql57-mysqld.service              enabled
rh-mysql57-mysqld@.service             disabled
# systemctl disable rh-mysql57-mysqld
Removed symlink /etc/systemd/system/multi-user.target.wants/rh-mysql57-mysqld.service.
# systemctl list-unit-files --type=service |grep mysql
rh-mysql57-mysqld.service              disabled
rh-mysql57-mysqld@.service             disabled

各種確認

# systemctl start rh-mysql57-mysqld
# mysql -u root -e 'select version();'
+-----------+
| version() |
+-----------+
| 5.7.24    |
+-----------+
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CentOS 7にMySQL 5.6をインストール(SCL)

はじめに

Software Collection(SCL)を利用してCentOS7にMySQL5.6をインストール
親記事:MySQL, MariaDBの各種インストール方法とEOLまとめ - Qiita
参考:Quick Start — Software Collections

サポート

本手法で導入した場合、Red Hat Software Collections Product Life Cycle - Red Hat Customer Portalより、2018-04がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

LOG

レポジトリ登録

# yum install -y centos-release-scl

インストール

# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

# yum install -y rh-mysql56
# scl enable rh-mysql56 bash
... 略

mysql起動/停止

# systemctl start rh-mysql56-mysqld
# systemctl status rh-mysql56-mysqld
● rh-mysql56-mysqld.service - MySQL 5.6 database server
   Loaded: loaded (/usr/lib/systemd/system/rh-mysql56-mysqld.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-10-21 14:34:30 UTC; 2s ago
  Process: 580 ExecStartPost=/usr/bin/scl enable $RH_MYSQL56_SCLS_ENABLED -- /opt/rh/rh-mysql56/root/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
  Process: 374 ExecStartPost=/usr/bin/scl enable $RH_MYSQL56_SCLS_ENABLED -- /opt/rh/rh-mysql56/root/usr/libexec/mysql-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
  Process: 272 ExecStartPre=/usr/bin/scl enable $RH_MYSQL56_SCLS_ENABLED -- /opt/rh/rh-mysql56/root/usr/libexec/mysql-prepare-db-dir %n (code=exited, status=0/SUCCESS)
  Process: 246 ExecStartPre=/usr/bin/scl enable $RH_MYSQL56_SCLS_ENABLED -- /opt/rh/rh-mysql56/root/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
  Process: 240 ExecStartPre=/usr/bin/scl enable $RH_MYSQL56_SCLS_ENABLED -- /usr/bin/scl_enabled rh-mysql56 (code=exited, status=0/SUCCESS)
 Main PID: 373 (mysqld_safe)
   CGroup: /docker/6bac11ce5afc7a46c22715a36c911135968027fb1d240ea678b59ac03a34e7fd/system.slice/rh-mysql56-mysqld.service
           tq373 /bin/sh /opt/rh/rh-mysql56/root/usr/bin/mysqld_safe --basedir=/opt/rh/rh-mysql56/root/usr
           mq548 /opt/rh/rh-mysql56/root/usr/libexec/mysqld --basedir=/opt/rh/rh-mysql56/root/usr --datadir...
           ? 373 /bin/sh /opt/rh/rh-mysql56/root/usr/bin/mysqld_safe --basedir=/opt/rh/rh-mysql56/root/usr

Oct 21 14:34:27 6bac11ce5afc scl[272]: Note: new default config file not created.
Oct 21 14:34:27 6bac11ce5afc scl[272]: Please make sure your config file is current
Oct 21 14:34:27 6bac11ce5afc scl[272]: WARNING: Default config file /etc/opt/rh/rh-mysql56/my.cnf exis...ystem
Oct 21 14:34:27 6bac11ce5afc scl[272]: This file will be read by default by the MySQL server
Oct 21 14:34:27 6bac11ce5afc scl[272]: If you do not want to use this, either remove it, or use the
Oct 21 14:34:27 6bac11ce5afc scl[272]: --defaults-file argument to mysqld_safe when starting the server
Oct 21 14:34:27 6bac11ce5afc su[365]: (to mysql) root on none
Oct 21 14:34:28 6bac11ce5afc mysqld_safe-scl-helper[373]: 191021 14:34:28 mysqld_safe Logging to '/var/o...g'.
Oct 21 14:34:28 6bac11ce5afc mysqld_safe-scl-helper[373]: 191021 14:34:28 mysqld_safe Starting mysqld da...sql
Oct 21 14:34:30 6bac11ce5afc systemd[1]: Started MySQL 5.6 database server.
Hint: Some lines were ellipsized, use -l to show in full.
# systemctl stop rh-mysql56-mysqld
# systemctl status rh-mysql56-mysqld
● rh-mysql56-mysqld.service - MySQL 5.6 database server
   Loaded: loaded (/usr/lib/systemd/system/rh-mysql56-mysqld.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

Oct 21 14:34:27 6bac11ce5afc scl[272]: WARNING: Default config file /etc/opt/rh/rh-mysql56/my.cnf exis...ystem
Oct 21 14:34:27 6bac11ce5afc scl[272]: This file will be read by default by the MySQL server
Oct 21 14:34:27 6bac11ce5afc scl[272]: If you do not want to use this, either remove it, or use the
Oct 21 14:34:27 6bac11ce5afc scl[272]: --defaults-file argument to mysqld_safe when starting the server
Oct 21 14:34:27 6bac11ce5afc su[365]: (to mysql) root on none
Oct 21 14:34:28 6bac11ce5afc mysqld_safe-scl-helper[373]: 191021 14:34:28 mysqld_safe Logging to '/var/o...g'.
Oct 21 14:34:28 6bac11ce5afc mysqld_safe-scl-helper[373]: 191021 14:34:28 mysqld_safe Starting mysqld da...sql
Oct 21 14:34:30 6bac11ce5afc systemd[1]: Started MySQL 5.6 database server.
Oct 21 14:35:01 6bac11ce5afc systemd[1]: Stopping MySQL 5.6 database server...
Oct 21 14:35:03 6bac11ce5afc systemd[1]: Stopped MySQL 5.6 database server.
Hint: Some lines were ellipsized, use -l to show in full.

mysql自動起動設定/設定解除

# systemctl enable rh-mysql56-mysqld
Created symlink from /etc/systemd/system/multi-user.target.wants/rh-mysql56-mysqld.service to /usr/lib/systemd/system/rh-mysql56-mysqld.service.
# systemctl list-unit-files --type=service |grep mysql
rh-mysql56-mysqld.service              enabled
# systemctl disable rh-mysql56-mysqld
Removed symlink /etc/systemd/system/multi-user.target.wants/rh-mysql56-mysqld.service.
# systemctl list-unit-files --type=service |grep mysql
rh-mysql56-mysqld.service              disabled

各種確認

# systemctl start rh-mysql56-mysqld
# mysql -u root -e 'select version();'
+-----------+
| version() |
+-----------+
| 5.6.40    |
+-----------+
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

メモ

Laradock を使って nginx, Laravel, PHP, MySQL, phpMyAdmin のdocker環境を構築

  • ドキュメント 2.2 Installation A.2 の条件に書いてあるコマンドを実行してもmysqlのコンテナが落ちて動かない...
    • MySQLのバージョンが8以上だと MySQLサーバー側で使われる認証方式がLaravel側でサポートされていないため認証に失敗する
      • ~/laradock/.env の MYSQL_VERSION を latest から 5.7.28 に変更
    • パスの指定がデフォルトの状態だとファイルが生成されてない
      • ~/laradock/.env の DATA_PATH_HOST を ~/.laradock/data から .laradock/data に変更
  • ~/laradock/.env の設定内容
    • APP_CODE_PATH_HOST=../laravel/
    • DATA_PATH_HOST=.laradock/data
    • MYSQL_VERSION=5.7.28
    • MYSQL_DATABASE=laravel
    • MYSQL_USER=laravel
    • MYSQL_PASSWORD=laravel
    • MYSQL_PORT=3306
    • MYSQL_ROOT_PASSWORD=root
  • ディレクトリ

    project
    ├── laradock/ (<- git clone https://github.com/laradock/laradock.git)
    └── laravel/

ターミナルからlaradockディレクトリに移動して docker-compose up -d nginx mysql phpmyadmin workspace のコマンド(20分位かかる)を実行したあと docker-compose exec --user=laradock workspace bash コマンドで workspace に入って laravelをインストール composer config -g repositories.packagist composer https://packagist.jp && composer global require hirak/prestissimo && composer create-project laravel/laravel .

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CentOS 7にMySQL 5.5をインストール(SCL)

はじめに

Software Collection(SCL)を利用してCentOS7にMySQL5.5をインストール
親記事:MySQL, MariaDBの各種インストール方法とEOLまとめ - Qiita
参考:Quick Start — Software Collections

サポート

本手法で導入した場合、Red Hat Software Collections Product Life Cycle - Red Hat Customer Portalより、2016-10がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

LOG

レポジトリ登録

# yum install -y centos-release-scl

インストール

# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)

# yum install -y mysql55
# scl enable mysql55 bash
... 略

mysql起動/停止

# systemctl start mysql55-mysqld
# systemctl status mysql55-mysqld
● mysql55-mysqld.service - MySQL database server
   Loaded: loaded (/usr/lib/systemd/system/mysql55-mysqld.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2019-10-21 14:18:44 UTC; 17s ago
  Process: 303 ExecStartPost=/usr/bin/scl enable $MYSQL55_SCLS_ENABLED -- /opt/rh/mysql55/root/usr/libexec/mysqld-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
  Process: 222 ExecStartPre=/usr/bin/scl enable $MYSQL55_SCLS_ENABLED -- /opt/rh/mysql55/root/usr/libexec/mysqld-prepare-db-dir %n (code=exited, status=0/SUCCESS)
  Process: 216 ExecStartPre=/usr/bin/scl enable $MYSQL55_SCLS_ENABLED -- /usr/bin/scl_enabled mysql55 (code=exited, status=0/SUCCESS)
 Main PID: 302 (scl)
   CGroup: /docker/6a76f167ea16b9cf0c4d2c3e6fc0758f58b60d71ed0611a8ab939779aa5d5880/system.slice/mysql55-mysqld.service
           tq302 /usr/bin/scl enable mysql55 -- /opt/rh/mysql55/root/usr/bin/mysqld_safe --basedir=/opt/rh/...
           tq304 /bin/bash /var/tmp/sclXTIRtH
           tq311 /bin/sh /opt/rh/mysql55/root/usr/bin/mysqld_safe --basedir=/opt/rh/mysql55/root/usr
           mq490 /opt/rh/mysql55/root/usr/libexec/mysqld --basedir=/opt/rh/mysql55/root/usr --datadir=/opt/...
           ? 302 /usr/bin/scl enable mysql55 -- /opt/rh/mysql55/root/usr/bin/mysqld_safe --basedir=/opt/rh/...

Oct 21 14:18:38 6a76f167ea16 scl[222]: strongly recommended for production servers.
Oct 21 14:18:38 6a76f167ea16 scl[222]: See the manual for more instructions.
Oct 21 14:18:38 6a76f167ea16 scl[222]: You can start the MySQL daemon with:
Oct 21 14:18:38 6a76f167ea16 scl[222]: systemctl start mysql55-mysqld
Oct 21 14:18:38 6a76f167ea16 scl[222]: You can test the MySQL daemon with mysql-test-run.pl
Oct 21 14:18:38 6a76f167ea16 scl[222]: after installing mysql55-mysql-test package.
Oct 21 14:18:38 6a76f167ea16 scl[222]: See /opt/rh/mysql55/root/usr/share/mysql-test/README for instructions.
Oct 21 14:18:39 6a76f167ea16 scl[302]: 191021 14:18:39 mysqld_safe Logging to '/var/log/mysql55-mysqld.log'.
Oct 21 14:18:39 6a76f167ea16 scl[302]: 191021 14:18:39 mysqld_safe Starting mysqld daemon with databas...mysql
Oct 21 14:18:44 6a76f167ea16 systemd[1]: Started MySQL database server.
Hint: Some lines were ellipsized, use -l to show in full.
# systemctl stop mysql55-mysqld
# systemctl status mysql55-mysqld
● mysql55-mysqld.service - MySQL database server
   Loaded: loaded (/usr/lib/systemd/system/mysql55-mysqld.service; disabled; vendor preset: disabled)
   Active: inactive (dead)

Oct 21 14:18:38 6a76f167ea16 scl[222]: You can start the MySQL daemon with:
Oct 21 14:18:38 6a76f167ea16 scl[222]: systemctl start mysql55-mysqld
Oct 21 14:18:38 6a76f167ea16 scl[222]: You can test the MySQL daemon with mysql-test-run.pl
Oct 21 14:18:38 6a76f167ea16 scl[222]: after installing mysql55-mysql-test package.
Oct 21 14:18:38 6a76f167ea16 scl[222]: See /opt/rh/mysql55/root/usr/share/mysql-test/README for instructions.
Oct 21 14:18:39 6a76f167ea16 scl[302]: 191021 14:18:39 mysqld_safe Logging to '/var/log/mysql55-mysqld.log'.
Oct 21 14:18:39 6a76f167ea16 scl[302]: 191021 14:18:39 mysqld_safe Starting mysqld daemon with databas...mysql
Oct 21 14:18:44 6a76f167ea16 systemd[1]: Started MySQL database server.
Oct 21 14:19:32 6a76f167ea16 systemd[1]: Stopping MySQL database server...
Oct 21 14:19:33 6a76f167ea16 systemd[1]: Stopped MySQL database server.
Hint: Some lines were ellipsized, use -l to show in full.

mysql自動起動設定/設定解除

# systemctl enable mysql55-mysqld
Created symlink from /etc/systemd/system/multi-user.target.wants/mysql55-mysqld.service to /usr/lib/systemd/system/mysql55-mysqld.service.
# systemctl list-unit-files --type=service |grep mysql
mysql55-mysqld.service                 enabled
# systemctl disable mysql55-mysqld
Removed symlink /etc/systemd/system/multi-user.target.wants/mysql55-mysqld.service.
# systemctl list-unit-files --type=service |grep mysql
mysql55-mysqld.service                 disabled

各種確認

# systemctl start mysql55-mysqld
# mysql -u root -e'select version();'
+-----------+
| version() |
+-----------+
| 5.5.52    |
+-----------+
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Docker+Rails+Mysqlでサーバー起動まで

はじめに

Dockerを使って開発演習が出来たことに感動したので、その嬉しさの勢いと、アウトプットとして書きます。また、Dockerの仕組みが分からなくても、以下に従っていけば、とりあえず構築できます。

環境

  • Docker for Windows
  • VScode
  • Windows10 Pro
  • Mysql

Windowsを使ってますが、基本的にmacの方も、DockerとMysqlがインストールされていれば大丈夫です。

Dockerがインストールされているかの確認

docker --version 
Docker version 18.09.1, build 4c52b90 

Dockerの起動

デスクトップにあるクジラのアイコンをクリックすると、起動します。右下のバーにクジラアイコンがあれば、Dockerが起動しています。

images.png

Railsアプリ用のディレクトリを作成

例えば現在のディレクトリがrailsというディレクトリだとします。

$ pwd 
/rails 

そして、これから作成するアプリ用のディレクトリを以下のように作り、そこに移動します。ここでは、ディレクトリ名をdocker_sample_appとします。

$ mkdir docker_sample_app 
$ cd docker_sample_app 
$ pwd 
  /rails/docker_sample_app

Dockerファイルなどの準備

以下の4つのファイルを作成してください。

$ touch docker-compose.yml Dockerfile Gemfile Gemfile.lock 

そして、VScode内でファイルを変更していきます。

docker-compose.yml
version: '3'
services:
  db:
    image: mysql:5.7
    ports:
      - "3306:3306"
    restart: always
    environment:
      - MYSQL_DATABASE=app_name_db
      - MYSQL_ROOT_PASSWORD=password
    volumes:
      - ./data:/var/lib/mysql:rw
    command: --innodb_use_native_aio=0
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app_name
    ports:
      - "3000:3000"
    depends_on:
      - db
    environment:
      DB_HOST: db
Dockerfile.
FROM ruby:2.5.3
ENV LANG C.UTF-8
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN gem install bundler
WORKDIR /tmp
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
RUN bundle install
ENV APP_HOME /app_name
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
ADD . $APP_HOME

docker-compose.ymlは上から9, 18行目のapp_nameを、Docker.fileは下から4行目の箇所を、先ほど作成したディレクトリ名に変えてください。(ここではdocker_sample_app)

docker-compose.yml内にportが二つあります。db側はmysql workbenchからアクセスするためのポートで、web側はブラウザでlocalhostでアクセスするためのものです。
正直workbenchは今回のサーバ起動までという目的には含まれてないので、気にしなくて大丈夫です。

Gemfile.
source 'https://rubygems.org' 
gem 'rails' 

Gemfile.lockは空で問題ないです。

Railsアプリの作成

ターミナルで、このコマンドをうってください。

$ docker-compose run web rails new . -d mysql --skip-bundle 

途中で

Overwrite /docker_sample_app/Gemfile? (enter "h" for help) [Ynaqdhm] 

と聞かれます。そこは、「y」とタイプしてください。 すると、ディレクトリ内にrails newした時と同じようなファイルが作成されているのが分かると思います。 次に、プロジェクトをビルドします。

$ docker-compose build 

このコマンドでDockerfileの内容が実行されます。 おめでとうございます。あと、もうすこしです。

サーバーを立ち上げる

以下のコマンドをうつことで、サーバーを立ち上げれます。

$ docker-compose up -d

この状態でブラウザに行って、localhostにアクセスしようとすると、

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory") 

といったエラーが出ると思います。これは、まだdatabaseファイルを設定していないからです。なので、変更してあげます。

database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password
  host: <%= ENV['DB_HOST'] %>
development:
  <<: *default
  database: app_name_development
test:
  <<: *default
  database: app_name_test

今回は、本番環境を用意する必要ではないので、Productionは消しました。先ほどと同じように、app_nameをディレクトリ名(docker_sample_app_developmentのように)に変更してください。  

そしたら、データベースファイルをいじったので、サーバーを再起動します。

$ docker-compose down
$ docker-compose up -d

そして、ブラウザをリロードすると、違うエラーが出ます。

Unknown database 'app_name_development'

これは、「データベースを作成してください」というエラーなので、言われるがままにデータベースを作りましょう。

docker-compose exec web rails db:create

ブラウザに戻ってください。localhost:3000にアクセスすると無事、例の画面が出るはずです!!!

20190427151753.png

これで今回の目標は達成されました!

docker-composeのコマンドについて

rails c, rails db:createなどのコマンドがありますが、docker-composeを使うときは、以下のコマンドを必ずその前に付けなければなりません。

docker-compose exec web 

なので、例えば、データベースを作りたい時は

docker-compose exec web rails db:create

となります!

ちなみにrails sコマンドは使いません。
docker-compose up -dでサーバが起動するからです。

[番外編]

ルーティングファイルなどを変更したらサーバーを再起動させますが、viewsファイルに関しては変更してもサーバの再起動は、必要ないのですが、反映されないことが分かりました。その場合は、development.rbファイルを変更する必要があることが分かりました。

development.rb
config.file_watcher = ActiveSupport::EventedFileUpdateChecker

のEventedFileUpdateCheckerのところをFileUpdateCheckerに変更します。

development.rb
config.file_watcher = ActiveSupport::FileUpdateChecker

参考にさせていただいた記事

dockerでrails5環境構築

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

docker-compose+Rails+Mysqlでサーバー起動まで

はじめに

Dockerを使って開発演習が出来たことに感動したので、その嬉しさの勢いと、アウトプットとして書きます。また、Dockerの仕組みが分からなくても、以下に従っていけば、とりあえず構築できます。

環境

  • Docker for Windows
  • VScode
  • Windows10 Pro
  • Mysql

Windowsを使ってますが、基本的にmacの方も、DockerとMysqlがインストールされていれば大丈夫です。

Dockerがインストールされているかの確認

docker --version 
Docker version 18.09.1, build 4c52b90 

Dockerの起動

デスクトップにあるクジラのアイコンをクリックすると、起動します。右下のバーにクジラアイコンがあれば、Dockerが起動しています。

images.png

Railsアプリ用のディレクトリを作成

例えば現在のディレクトリがrailsというディレクトリだとします。

$ pwd 
/rails 

そして、これから作成するアプリ用のディレクトリを以下のように作り、そこに移動します。ここでは、ディレクトリ名をdocker_sample_appとします。

$ mkdir docker_sample_app 
$ cd docker_sample_app 
$ pwd 
  /rails/docker_sample_app

Dockerファイルなどの準備

以下の4つのファイルを作成してください。

$ touch docker-compose.yml Dockerfile Gemfile Gemfile.lock 

そして、VScode内でファイルを変更していきます。

docker-compose.yml
version: '3'
services:
  db:
    image: mysql:5.7
    ports:
      - "3306:3306"
    restart: always
    environment:
      - MYSQL_DATABASE=app_name_db
      - MYSQL_ROOT_PASSWORD=password
    volumes:
      - ./data:/var/lib/mysql:rw
    command: --innodb_use_native_aio=0
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    volumes:
      - .:/app_name
    ports:
      - "3000:3000"
    depends_on:
      - db
    environment:
      DB_HOST: db
Dockerfile.
FROM ruby:2.5.3
ENV LANG C.UTF-8
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN gem install bundler
WORKDIR /tmp
ADD Gemfile Gemfile
ADD Gemfile.lock Gemfile.lock
RUN bundle install
ENV APP_HOME /app_name
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
ADD . $APP_HOME

docker-compose.ymlは上から9, 18行目のapp_nameを、Docker.fileは下から4行目の箇所を、先ほど作成したディレクトリ名に変えてください。(ここではdocker_sample_app)

docker-compose.yml内にportが二つあります。db側はmysql workbenchからアクセスするためのポートで、web側はブラウザでlocalhostでアクセスするためのものです。
正直workbenchは今回のサーバ起動までという目的には含まれてないので、気にしなくて大丈夫です。

Gemfile.
source 'https://rubygems.org' 
gem 'rails' 

Gemfile.lockは空で問題ないです。

Railsアプリの作成

ターミナルで、このコマンドをうってください。

$ docker-compose run web rails new . -d mysql --skip-bundle 

途中で

Overwrite /docker_sample_app/Gemfile? (enter "h" for help) [Ynaqdhm] 

と聞かれます。そこは、「y」とタイプしてください。 すると、ディレクトリ内にrails newした時と同じようなファイルが作成されているのが分かると思います。 次に、プロジェクトをビルドします。

$ docker-compose build 

このコマンドでDockerfileの内容が実行されます。 おめでとうございます。あと、もうすこしです。

サーバーを立ち上げる

以下のコマンドをうつことで、サーバーを立ち上げれます。

$ docker-compose up -d

この状態でブラウザに行って、localhostにアクセスしようとすると、

Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2 "No such file or directory") 

といったエラーが出ると思います。これは、まだdatabaseファイルを設定していないからです。なので、変更してあげます。

database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password: password
  host: <%= ENV['DB_HOST'] %>
development:
  <<: *default
  database: app_name_development
test:
  <<: *default
  database: app_name_test

今回は、本番環境を用意する必要ではないので、Productionは消しました。先ほどと同じように、app_nameをディレクトリ名(docker_sample_app_developmentのように)に変更してください。  

そしたら、データベースファイルをいじったので、サーバーを再起動します。

$ docker-compose down
$ docker-compose up -d

そして、ブラウザをリロードすると、違うエラーが出ます。

Unknown database 'app_name_development'

これは、「データベースを作成してください」というエラーなので、言われるがままにデータベースを作りましょう。

docker-compose exec web rails db:create

ブラウザに戻ってください。localhost:3000にアクセスすると無事、例の画面が出るはずです!!!

20190427151753.png

これで今回の目標は達成されました!

docker-composeのコマンドについて

rails c, rails db:createなどのコマンドがありますが、docker-composeを使うときは、以下のコマンドを必ずその前に付けなければなりません。

docker-compose exec web 

なので、例えば、データベースを作りたい時は

docker-compose exec web rails db:create

となります!

ちなみにrails sコマンドは使いません。
docker-compose up -dでサーバが起動するからです。

[番外編]

ルーティングファイルなどを変更したらサーバーを再起動させますが、viewsファイルに関しては変更してもサーバの再起動は、必要ないのですが、反映されないことが分かりました。その場合は、development.rbファイルを変更する必要があることが分かりました。

development.rb
config.file_watcher = ActiveSupport::EventedFileUpdateChecker

のEventedFileUpdateCheckerのところをFileUpdateCheckerに変更します。

development.rb
config.file_watcher = ActiveSupport::FileUpdateChecker

参考にさせていただいた記事

dockerでrails5環境構築

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CentOS 6にMySQL 5.7をインストール(SCL)

はじめに

Software Collection(SCL)を利用してCentOS6にMySQL5.7をインストール
親記事:MySQL, MariaDBの各種インストール方法とEOLまとめ - Qiita
参考:Quick Start — Software Collections

サポート

本手法で導入した場合、Red Hat Software Collections Product Life Cycle - Red Hat Customer Portalより、2019-11がEOLだと思われる。
それ以降に報告された脆弱性や不具合への対応は実施されない可能性がある。

LOG

レポジトリ登録

# yum install -y centos-release-scl

インストール

cat /etc/redhat-release
CentOS release 6.10 (Final)

# yum install -y rh-mysql57
# scl enable rh-mysql57 bash
... 略

mysql起動/停止

# service rh-mysql57-mysqld start
Initializing MySQL database
Starting rh-mysql57-mysqld:                                [  OK  ]

# service rh-mysql57-mysqld status
rh-mysql57-mysqld (pid  548) is running...
# service rh-mysql57-mysqld stop
Stopping rh-mysql57-mysqld:                                [  OK  ]

# service rh-mysql57-mysqld status
rh-mysql57-mysqld is stopped

mysql自動起動設定/設定解除

# chkconfig rh-mysql57-mysqld on
# chkconfig --list rh-mysql57-mysqld
rh-mysql57-mysqld       0:off   1:off   2:on    3:on    4:on    5:on    6:off
# chkconfig rh-mysql57-mysqld off
# chkconfig --list rh-mysql57-mysqld
rh-mysql57-mysqld       0:off   1:off   2:off   3:off   4:off   5:off   6:off

各種確認

# service rh-mysql57-mysqld start
Starting rh-mysql57-mysqld:                                [  OK  ]

# mysql -u root -e'select version();'
+-----------+
| version() |
+-----------+
| 5.7.24    |
+-----------+
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

CentOS 6にMySQL 5.1をインストール(OS標準)

はじめに

CentOS6にMySQLを標準インストール
親記事:MySQL, MariaDBの各種インストール方法とEOLまとめ - Qiita

LOG

インストール

cat /etc/redhat-release
CentOS release 6.10 (Final)

# yum install -y mysql-server
... 略

mysql起動/停止

初回起動時には初期設定関係のメッセージが表示される。

# service mysqld start
Initializing MySQL database:  Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h 57db8f7c1234 password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default.  This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

                                                           [  OK  ]
Starting mysqld:                                           [  OK  ]

# service mysqld status
mysqld (pid  284) is running...
# service mysqld stop
Stopping mysqld:                                           [  OK  ]

# service mysqld status
mysqld is stopped

mysql自動起動設定/設定解除

# chkconfig mysqld on
# chkconfig --list mysqld
mysqld          0:off   1:off   2:on    3:on    4:on    5:on    6:off
# chkconfig mysqld off
# chkconfig --list mysqld
mysqld          0:off   1:off   2:off   3:off   4:off   5:off   6:off

各種確認

# service mysqld start
Starting mysqld:                                           [  OK  ]

# mysql -u root -e'select version();'
+-----------+
| version() |
+-----------+
| 5.1.73    |
+-----------+
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MySQL, MariaDBの各種インストール方法とEOLまとめ

はじめに

MySQL, mariaDBの各種インストール方法とそれぞれのEOLを纏めてみます。
EOLは無償でパッチ提供が継続されるであろう期日とし、各提供者が定義している個別のサポート名称や内容をあまり考慮していません。

サマリ

導入方法 OS DB EOL 参考
OS標準 CentOS6 MySQL5.1 2017-05-10 1 2
OS標準 CentOS7 MariaDB5.5 2020-11-30 1 2
SCL CentOS6,7 MySQL5.5 2016-10 3
SCL CentOS6,7 MySQL5.6 2018-04 3
SCL CentOS6,7 MySQL5.7 2019-11 3
SCL CentOS7 MySQL8.0 2023-04 3
SCL CentOS6,7 MariaDB5.5 2016-10 3
SCL CentOS6,7 MariaDB10.0 2018-04 3
SCL CentOS6,7 MariaDB10.1 2019-05 3
SCL CentOS6,7 MariaDB10.2 2020-10 3
SCL CentOS6,7 MariaDB10.3 2023-06 3
AppStream CentOS8 MySQL8.0 2023-04 4 5
AppStream CentOS8 MariaDB10.3 2023-05 4 5
OS標準 Debian8 2020-06-30 6
OS標準 Debian9 2022-xx-xx 6
OS標準 Debian10 202x-xx-xx 6
OS標準 Ubuntu14.04 2019-04 7
OS標準 Ubuntu16.04 2021-04 7
OS標準 Ubuntu18.04 2023-04 7
その他 - MySQL5.0 2011-12 8 9
その他 - MySQL5.1 2013-12 8 9
その他 - MySQL5.5 2018-12 8 9
その他 - MySQL5.6 2021-02 8 9
その他 - MySQL5.7 2023-10 8 9
その他 - MySQL8.0 2026-04 8 9

各種導入方法

OS標準

CentOS + Software Collections(SCL)

CentOS + Application Stream(AppStream)

Official Repository

  • CentOS
  • Debian
  • Ubuntu
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Java】MySQLに接続する

概要

MySQL : 5.7
Java : 8.1
Mac
Eclipse

始める前に以下条件をクリアしている

・MySQLで既にtableなどができている。
・ターミナルなどで難なく接続できている

JDBCをダウンロード

MySQLのJDBCをダウンロード
https://dev.mysql.com/downloads/connector/j/

「Platform Independent (Architecture Independent), Compressed TAR Archive」 をダウンロード
スクリーンショット 2019-10-21 17.25.07.png

解凍したファイルにmysql-connector-java-5.1.48-bin.jarがあるから、
Tomcatの/Tomcat/libに入れる
(私の場合、/Users/namari/apache-tomcat-9.0.27/lib

接続してみる

プロジェクトの中に、SqlTest.javaを適当に作ってみる。

SqlTest.java
package chapter14;

import java.io.*;
import java.sql.*;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

/**
 * Servlet implementation class SqlTest
 */
@WebServlet("/SqlTest")
public class SqlTest extends HttpServlet {
    private static final long serialVersionUID = 1L;


    protected void doGet(
        HttpServletRequest request,
        HttpServletResponse response
    ) throws ServletException, IOException {

        // 今回は、localhostにあるbook のデータベース
        String url = "jdbc:mysql://localhost/book";

        try{
            Class.forName("com.mysql.jdbc.Driver");
            Connection conn = DriverManager.getConnection(url, "ユーザー名", "パスワード");

            // データベースに対する処理
            msg = "ok";
        } catch (SQLException | ClassNotFoundException e){
            msg = "NG";

        }
        response.getWriter().println(msg);
    }

}
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MySQLの既存テーブルをDjangoで扱うときのメモ

1.準備

まずはsettings.pyにMySQLの接続先情報を記述します。

settings.py
import pymysql
pymysql.install_as_MySQLdb()
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '###db',  # データベース名
        'USER': 'root',  # ユーザ名
        'PASSWORD': 'password',  # パスワード
        'HOST': '127.0.0.1',  # MariaDBがあるサーバのIPアドレスやホストを。空欄はローカルホスト
        'PORT': '3306',  # 空欄はデフォルトポートの3306
    }
}

MySQLを扱うモジュールが必要なため、PYMYSQLをインストールしてきます。

pip install PyMySQL

2.マイグレートしていく

Models.pyに記載するモデル定義情報を自動で生成

下記コマンドで既存テーブルのモデル定義を自動で作ります。
python manage.py inspectdb table テーブル名

> python manage.py inspectdb table テーブル名
# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#   * Rearrange models' order
#   * Make sure each model has one field with primary_key=True
#   * Make sure each ForeignKey has `on_delete` set to the desired behavior.
#   * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models
# Unable to inspect table 'table'
# The error was: (1146, "Table '##db.table' doesn't exist")


class Usertable(models.Model):
    id = models.BigIntegerField(unique=True, blank=True, null=True)
    name = models.CharField(max_length=50, blank=True, null=True)
    screen_name = models.TextField(blank=True, null=True)
    description = models.TextField(blank=True, null=True)
    profile_image_url = models.TextField(blank=True, null=True)
    follow_count = models.IntegerField(blank=True, null=True)
    followers_count = models.IntegerField(blank=True, null=True)
    tweet_count = models.IntegerField(blank=True, null=True)
    video_count = models.IntegerField(blank=True, null=True)
    video_count_date = models.BigIntegerField(blank=True, null=True)
    image_count = models.IntegerField(blank=True, null=True)
    image_count_date = models.BigIntegerField(blank=True, null=True)
    twitter_created_at = models.DateTimeField()
    created_at = models.DateTimeField()
    updated_at = models.DateTimeField()

    class Meta:
        managed = False
        db_table = 'usertable'

出力された情報はプロジェクトのmodels.pyにコピー&ペーストにしましょう。
ちなみに上記コマンドを事項した際にエラーらしきものが確認できる。
# The error was: (1146, "Table '##db.table' doesn't exist")
これは何なのか、正直わからないw教えていただきたい。

マイグレートしたらエラーでた('id' can only be used as a field name if the field also sets 'primary_key=True')

> python manage.py migrate
SystemCheckError: System check identified some issues:

ERRORS:
hello.Usertable: (models.E004) 'id' can only be used as a field name if the field also sets 'primary_key=True'.

翻訳したらわかるように
'id'は、フィールドに 'primary_key = True'も設定されている場合にのみフィールド名として使用できます。
既存テーブルにidカラムがある場合は制限があるようです。

先ほどのmodels.pyのidの定義を下記に変更しました。

id = models.BigIntegerField(unique=True, blank=True, null=True, primary_key=True)

再度実行してみます。
またエラー。。。null=Teueはいらないようです。

> python manage.py migrate
SystemCheckError: System check identified some issues:

ERRORS:
hello.Usertable.id: (fields.E007) Primary keys must not have null=True.
        HINT: Set null=False on the field, or remove primary_key=True argument.

再度直して。

id = models.BigIntegerField(unique=True, blank=True, primary_key=True)

> python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  No migrations to apply.
  Your models have changes that are not yet reflected in a migration, and so won't be applied.
  Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.

ん?なにかおかしい。
そもそも私の理解が足りず、まずはマイグレーションをしてほしいみたい。
下記の感じかな!?

・まずは、マイグレーションで移行する情報をまとめるマイグレーションファイルを作成.

> python manage.py makemigrations
Migrations for 'hello':
  hello\migrations\0001_initial.py
    - Create model Usertable

・マイグレーションファイルの適用.

> python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, hello, sessions
Running migrations:
  Applying hello.0001_initial... OK

管理サイトからもアクセスできるように。

下記にアクセスすれば管理サイトにアクセスできるかと思いますが、管理サイトからテーブル情報を操作できます。
http://127.0.0.1:8000/admin/

そのままでは表示もされないので、管理サイトでデータベースを確認できるようにします。
作ったアプリの配下にあるadmin.pyを編集します。

from django.contrib import admin
from hello.models import Usertable #追加

# Register your models here.
admin.site.register(Usertable) #追加

Models.pyのモデル定義をした際の
class Usertable(models.Model):
クラス名をimport&registerしています。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

MQTTのMessageを残らずMySQL(MariaDB)に保存するコマンド

個人的なメモ

db構造

sudo mysql -e "SHOW FULL COLUMNS FROM mqtt.msg"
+-------+---------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| Field | Type          | Collation         | Null | Key | Default | Extra | Privileges                      | Comment |
+-------+---------------+-------------------+------+-----+---------+-------+---------------------------------+---------+
| m     | varchar(1124) | latin1_swedish_ci | YES  |     | NULL    |       | select,insert,update,references |         |
| tm    | int(11)       | NULL              | YES  |     | NULL    |       | select,insert,update,references |         |
+-------+---------------+-------------------+------+-----+---------+-------+---------------------------------+---------+

コマンド

mosquitto_sub -t "#" -v | xargs -I@ sudo mysql -e "insert into mqtt.msg (m,tm)values('@',$(date +%s))"

上記だと、時間が固定になってしまいます。
SQLの方で持ってくるように変更

mosquitto_sub -t "#" -v | xargs -I@ sudo mysql -e "insert into mqtt.msg (m,tm)values('@',UNIX_TIMESTAMP(NOW()))"

課題

・セキュリティ的に問題有り
・トピックとMessageが分割できていない

commentいただけると嬉しいです!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む