· 6 years ago · Aug 07, 2019, 01:26 PM
1#! /bin/bash
2set -o nounset
3#set -o errexit
4set -o pipefail
5set -o xtrace
6
7cp /my.cnf /etc/mysql/my.cnf
8
9## Binary log options
10if [ "${RECEIVER_ENABLE_BIN_LOG}" == "1" ]; then
11 sed -i '/^#log_bin.*/s/^#//' /etc/mysql/my.cnf
12fi
13sed -i -e "s/logBinIndex/${RECEIVER_BIN_LOG_INDEX}/g" /etc/mysql/my.cnf
14sed -i -e "s/logBinMaxSize/${RECEIVER_BIN_LOG_MAX_SIZE}/g" /etc/mysql/my.cnf
15sed -i -e "s/binLogFormat/${RECEIVER_BIN_LOG_FORMAT}/g" /etc/mysql/my.cnf
16sed -i -e "s/logBinDays/${RECEIVER_BIN_LOG_EXPIRE_DAYS}/g" /etc/mysql/my.cnf
17
18
19if [ ! -f /var/lib/mysql/ibdata1 ]; then
20 mysqld --initialize-insecure
21fi
22chown -R mysql:mysql /var/lib/mysql
23
24mysqld_safe --skip-syslog --skip-grant-tables &
25for i in $(seq 1 60); do
26 sleep 1
27 mysql -e ""
28 retval=$?
29 if [ $retval -eq 0 ]; then
30 break
31 fi
32done
33
34
35
36mysql -h127.0.0.1 -e "use mysql;update user set authentication_string=PASSWORD('') where User='root';update user set plugin='mysql_native_password' where User='root';flush privileges;"
37
38MYSQL_DB_NAME=$(grep -oP '(?<=db=)[^=]*' /var/run/secrets/mysql_credentials)
39MYSQL_DB_USER=$(grep -oP '(?<=user=)[^=]*' /var/run/secrets/mysql_credentials)
40MYSQL_DB_PASSWORD=$(grep -oP '(?<=password=)[^=]*' /var/run/secrets/mysql_credentials)
41
42MYSQL_BACKUP_USER=$(grep -oP '(?<=user=)[^=]*' /var/run/secrets/mysql_backup)
43MYSQL_BACKUP_PASSWORD=$(grep -oP '(?<=password=)[^=]*' /var/run/secrets/mysql_backup)
44
45RESULT=$(mysqlshow | grep -v Wildcard | grep -o ${MYSQL_DB_NAME})
46if [ "$RESULT" != "${MYSQL_DB_NAME}" ]; then
47 mysql -h127.0.0.1 -e "Create database if not exists ${MYSQL_DB_NAME}; grant all on ${MYSQL_DB_NAME}.* to ${MYSQL_DB_USER} identified by '${MYSQL_DB_PASSWORD}';"
48 mysql -h127.0.0.1 ${MYSQL_DB_NAME} < /mysqlBackup.sql
49 mysql -h127.0.0.1 ${MYSQL_DB_NAME} -e "update viz_users set email='${DEFAULT_USER_EMAIL}', password=PASSWORD('${DEFAULT_USER_PASSWORD}') where uid=${DEFAULT_USER_ID} and tid=${VIZRU_TENANT_ID};"
50fi
51
52RESULT=$(mysqlshow | grep -v Wildcard | grep -o SecureDB)
53if [ "$RESULT" != "SecureDB" ]; then
54 echo "Creating Secure DB"
55 mysql -h127.0.0.1 ${MYSQL_DB_NAME} -e "drop table remote_log;"
56 mysql -h127.0.0.1 ${MYSQL_DB_NAME} -e "drop trigger log_insert;"
57 mysql -h127.0.0.1 -e "create database if not exists SecureDB; grant select,insert on SecureDB.* to ${MYSQL_DB_USER} identified by '${MYSQL_DB_PASSWORD}';"
58 mysql -h127.0.0.1 SecureDB -e "create table viz_log (tid int, action_type int, inserted_at timestamp, uid bigint, message text, ip_address varchar(200), ref_url text, ref_key varchar(250), action_status varchar(100), fid text, lid int, app_id int, cid int);"
59 mysql -h127.0.0.1 ${MYSQL_DB_NAME} --delimiter=';;' -e "create trigger log_insert after insert on viz_log for each row begin insert into SecureDB.viz_log(tid, action_type, inserted_at, uid, message, ip_address,ref_url, ref_key, action_status, fid, lid, app_id, cid) values(NEW.tid, NEW.action_type, NEW.inserted_at, NEW.uid, NEW.message, NEW.ip_address, NEW.ref_url, NEW.ref_key, NEW.action_status, NEW.fid, NEW.lid, NEW.app_id, NEW.cid);END;;"
60fi
61
62mysql -h127.0.0.1 ${MYSQL_DB_NAME} -e "GRANT LOCK TABLES, SELECT, SHOW VIEW ON *.* TO '${MYSQL_BACKUP_USER}' IDENTIFIED BY '${MYSQL_BACKUP_PASSWORD}';"
63
64for entry in "/sqlUpdates"/*
65do
66 echo $entry "adding"
67 mysql -h127.0.0.1 -u${MYSQL_DB_USER} -p${MYSQL_DB_PASSWORD} ${MYSQL_DB_NAME} < $entry
68 rm $entry
69done
70
71if [ "${VIZRU_MATCH_TENANTINFO}" == 1 ]; then
72 mysql -h127.0.0.1 ${MYSQL_DB_NAME} -e 'alter table viz_tenants modify column name varchar(200);'
73 mysql -h127.0.0.1 ${MYSQL_DB_NAME} -e "update viz_tenants set name='${VIZRU_TENANT_NAME}', domain='${VIZRU_TENANT_DOMAIN}' where tid = ${VIZRU_TENANT_ID}"
74fi
75
76pkill mysqld
77
78for i in $(seq 1 60); do
79 sleep 1
80 if [[ $(ps -ef | grep -v grep | grep mysql | wc -l) -eq 0 ]];then
81 break
82 fi
83done
84
85
86/usr/bin/mysqld_safe --ledir=/usr/sbin --skip-syslog && tail -f /var/log/mysql/mysql.log & tail -f /var/log/mysql/error.log