Shell 基於Docker操作InfluxDB安裝建庫建立使用者並授權
阿新 • • 發佈:2018-12-05
InfluxDB提供了一些輔助命令,使得我們可以不用進入到influxdb控制檯裡面就可以操作,這點很像mysql,所以實現起來很方便快捷。
目錄
安裝指令碼
docker_influxdb_install.sh
#! /bin/bash #file:docker_influxdb_install.sh #company:cvnavi.com #author:Pengjunlin echo "當前執行檔案......$0" IS_EXISTS_INFLUXDB_IMAGE_NAME="false" IS_EXISTS_INFLUXDB_CONTAINER="false" IS_EXISTS_INFLUXDB_CONTAINER_RUNGING="false" START_CONTAINER_CHECK_MAX_TIMES=3 START_CONTAINER_CHECK_CURRENT=1 # ========================下載映象====================================== for i in [ `docker images ` ]; do if [[ "$i" == "docker.io/influxdb" || "$i" == "influxdb" ]]; then echo "$i" IS_EXISTS_INFLUXDB_IMAGE_NAME="true" break fi done if [[ $IS_EXISTS_INFLUXDB_IMAGE_NAME == "true" ]]; then echo "本地已存在influxdb:latest映象,不再重新下載......." else echo "本地不存在influxdb:latest映象,正在下載......." docker pull influxdb:latest fi # ====================建立映象=========================================== if [[ $IS_EXISTS_INFLUXDB_CONTAINER == "false" ]]; then echo "檢查influxdb容器是否建立......" for i in [ `docker ps -a` ]; do if [[ "$i" == "influxdb" ]]; then IS_EXISTS_INFLUXDB_CONTAINER="true" break fi done if [[ $IS_EXISTS_INFLUXDB_CONTAINER == "false" ]]; then cp docker_influxdb_create_user.sh /etc/influxdb/scripts/docker_influxdb_create_user.sh chmod a+x /etc/influxdb/scripts/docker_influxdb_create_user.sh if [[ -f "/etc/influxdb/scripts/docker_influxdb_create_user.sh" ]]; then echo "檢查到influxdb容器尚未建立!" # 執行容器建立 # 執行容器例項 --privileged=true 獲取管理員許可權 echo "建立influxdb容器例項..." sudo docker run -d -p 38083:8083 -p 38086:8086 --name influxdb --restart always --privileged=true -v /etc/influxdb/scripts:/etc/influxdb/scripts influxdb:latest # 休10秒鐘 echo "休眠等待10s以便Docker完成容器執行......" sleep 10s echo "進入influxdb容器: docker exec -it influxdb /bin/bash -c 'sh /etc/influxdb/scripts/docker_influxdb_create_user.sh'" # 進入容器並執行指令碼: docker exec -it influxdb /bin/bash -c "sh /etc/influxdb/scripts/docker_influxdb_create_user.sh" # 刪除執行檔案 rm -f /etc/influxdb/scripts/docker_influxdb_create_user.sh echo "influxdb容器已建立完畢!" IS_EXISTS_INFLUXDB_CONTAINER_RUNGING=true else echo "/etc/influxdb/scripts/docker_influxdb_create_user.sh檔案不存在,docker需要用此檔案建立influxdb容器例項並建立使用者." exit 1 fi else echo "檢查到influxdb容器已建立!" fi fi # ===================啟動或重啟容器================================ if [[ $IS_EXISTS_INFLUXDB_CONTAINER == "true" && $IS_EXISTS_INFLUXDB_CONTAINER_RUNGING == "false" ]]; then echo "下面最多執行三次influxdb容器檢查重啟..." while [[ $START_CONTAINER_CHECK_CURRENT -le $START_CONTAINER_CHECK_MAX_TIMES ]]; do echo "檢查influxdb容器狀態......$START_CONTAINER_CHECK_CURRENT" for i in [ `docker ps ` ]; do if [[ "$i" == "influxdb" ]]; then IS_EXISTS_INFLUXDB_CONTAINER_RUNGING="true" break fi done if [[ $IS_EXISTS_INFLUXDB_CONTAINER_RUNGING == "false" ]]; then echo "檢查到influxdb容器當前不在執行狀態!" echo "啟動influxdb容器...." docker start influxdb for i in [ `docker ps ` ]; do if [[ "$i" == "influxdb" ]]; then IS_EXISTS_INFLUXDB_CONTAINER_RUNGING="true" break fi done if [[ $IS_EXISTS_INFLUXDB_CONTAINER_RUNGING == "true" ]]; then echo "influxdb容器已經在執行!" break fi else echo "influxdb容器已經在執行!" break fi START_CONTAINER_CHECK_CURRENT=$((START_CONTAINER_CHECK_CURRENT+1)) done if [[ $IS_EXISTS_INFLUXDB_CONTAINER_RUNGING == "false" ]]; then echo "檢查到influxdb容器當前仍未執行,請聯絡相關人員進行處理!" exit 1 fi fi
資料庫操作指令碼
docker_influxdb_create_user.sh
#!/bin/bash #file:docker_influxdb_create_user.sh #company:cvnavi.com #author:Pengjunlin echo "當前執行檔案......$0" INFLUXDB_DATABASE_NAME="rtvsweb" INFLUXDB_USER_NAME="admin" INFLUXDB_USER_PWD="admin" # influxdb資料庫相關配置 echo "influxdb資料庫相關配置" influx -version # 查詢資料庫列表 echo "查詢資料庫列表" influx -execute "show databases" # 刪除資料庫 echo "刪除資料庫$INFLUXDB_DATABASE_NAME" influx -execute "drop database $INFLUXDB_DATABASE_NAME" # 建立資料庫 echo "建立資料庫$INFLUXDB_DATABASE_NAME" influx -execute "create database $INFLUXDB_DATABASE_NAME" # 建立使用者並授權 echo "建立$INFLUXDB_USER_NAME使用者並授權" influx -execute "create user "$INFLUXDB_USER_NAME" with password '$INFLUXDB_USER_PWD' with all privileges" # 查詢使用者列表 echo "查詢使用者列表" influx -execute "use $INFLUXDB_DATABASE_NAME" -execute "show users"
執行輸出
=================InfluxDB檢查安裝:======================start 安裝Docker Influxdb環境... 當前執行檔案......./docker_influxdb_install.sh influxdb 本地已存在influxdb:latest映象,不再重新下載....... 檢查influxdb容器是否建立...... 檢查到influxdb容器尚未建立! 建立influxdb容器例項... 22979c1f0600d218105f8665a6c0b21dc867b04d7873ad2b17d9f92cf5a2ed5d 休眠等待10s以便Docker完成容器執行...... 進入influxdb容器: docker exec -it influxdb /bin/bash -c 'sh /etc/influxdb/scripts/docker_influxdb_create_user.sh' 當前執行檔案....../etc/influxdb/scripts/docker_influxdb_create_user.sh influxdb資料庫相關配置 InfluxDB shell version: 1.7.0 Enter an InfluxQL query 查詢資料庫列表 name: databases name ---- 刪除資料庫rtvsweb 建立資料庫rtvsweb 建立admin使用者並授權 查詢使用者列表 user admin ---- ----- admin true influxdb容器已建立完畢! ./docker_influxdb_install.sh 執行完成! =================InfluxDB檢查安裝:======================end InfluxDB時序資料庫安裝成功!
注意:如果程式採用link連線的話埠號仍然是8086,想讓Docker重啟了容器自動啟動執行需要配置 --restart always。