Skip to content

Commit 72f4289

Browse files
authored
Merge pull request #36 from sy-c/master
v1.3.7
2 parents 8b4d638 + 9bef012 commit 72f4289

File tree

2 files changed

+72
-10
lines changed

2 files changed

+72
-10
lines changed

doc/releaseNotes.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,3 +27,6 @@ This file describes the main feature changes for each InfoLogger released versio
2727
## v1.3.6 - 31/10/2019
2828
- added header file InfoLoggerErrorCodes.h to reference centrally the definition of error code ranges reserved specifically for each o2 module, and possibly the individual description / documentation of each error code.
2929
- fix in infoLoggerServer threads initialization.
30+
31+
## v1.3.7 - 13/11/2019
32+
- newMysql.sh: no changes done if SQL settings already ok.

newMysql.sh

Lines changed: 69 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
# option i: disable interactive mode
1111
# option a: source a bash script (e.g. to override multiple variables at once)
1212
# option s: evaluate associated argument (e.g. to override a value)
13+
# option f: force re-do all actions
14+
# option q: enable SQL debugging
1315

1416
# defaults assume this script is executed on infoLoggerServer host
1517
# and that DB runs on same node (local connection to db)
@@ -19,6 +21,12 @@ SQL_ROOT_USER=root
1921
SQL_ROOT_PWD=""
2022
SQL_ROOT_HOST=localhost
2123

24+
# if set, force all actions even if they seem not necessary
25+
FORCE_REDO=0
26+
27+
# if set, SQL queries & output printed
28+
SQL_DEBUG=0
29+
2230
# where are we running now
2331
HERE=`hostname -f`
2432

@@ -77,7 +85,7 @@ MYSQL_EXE=mysql
7785

7886

7987
# parse command line arguments
80-
while getopts "ia:s:" option
88+
while getopts "ia:s:fq" option
8189
do
8290
case $option in
8391
i)
@@ -100,9 +108,18 @@ do
100108
s)
101109
eval $OPTARG
102110
;;
111+
f)
112+
echo "Force redo all actions"
113+
FORCE_REDO=1
114+
;;
115+
q)
116+
echo "SQL debugging enabled"
117+
SQL_DEBUG=1
118+
;;
103119
esac
104120
done
105121

122+
106123
if [ "$IS_INTERACTIVE" -eq "1" ]; then
107124
# begin interactive part
108125

@@ -169,31 +186,73 @@ if [ "$?" != "0" ]; then
169186
exit 1
170187
fi
171188

189+
# function to execute SQL command
190+
# arg1: SQL command
191+
# arg2: database name, if any
192+
function mysqlExecute {
193+
if [ "$SQL_DEBUG" -eq "1" ]; then
194+
echo "SQL : $1"
195+
fi
196+
SQLRES=`$MYSQL_EXE -h $SQL_ROOT_HOST -u $SQL_ROOT_USER $SQL_PWD_ARG -B -N -e "$1" $2 2>&1`
197+
RET=$?
198+
if [ "$SQL_DEBUG" -eq "1" ]; then
199+
if [ "$SQLRES" != "" ]; then
200+
echo "$SQLRES"
201+
fi
202+
fi
203+
return $RET
204+
}
205+
172206
echo "Setting up mysql for infoLogger"
173207

208+
CHANGES=0
209+
174210
# Create database
175-
$MYSQL_EXE -h $SQL_ROOT_HOST -u $SQL_ROOT_USER $SQL_PWD_ARG -e "create database $INFOLOGGER_DB_NAME" 2>/dev/null
176-
echo "MySQL database $INFOLOGGER_DB_NAME created"
211+
mysqlExecute "quit"
212+
if [ "$?" != "0" ] || [ "$FORCE_REDO" -eq 1 ]; then
213+
echo "Create database $INFOLOGGER_DB_NAME"
214+
mysqlExecute "create database $INFOLOGGER_DB_NAME"
215+
if [ "$?" != "0" ] && [ "$FORCE_REDO" -eq 0 ]; then
216+
exit
217+
fi
218+
CHANGES=1
219+
else
220+
echo "Database $INFOLOGGER_DB_NAME already exists, skipping database create"
221+
fi
222+
177223

178224
# for mysql8
179225
#PWDOPT="with mysql_native_password"
180226

181227
# Create accounts SQL command
182228
MYSQL_COMMANDS=""
229+
183230
for CONFIG in "${EXTRA_CONFIG[@]}"; do
231+
# check if we can already connect
232+
mysql -u "${EXTRA_USER[$CONFIG]}" -p"${EXTRA_PWD[$CONFIG]}" -B -N -e "quit" $INFOLOGGER_DB_NAME > /dev/null 2>&1
233+
# mysqlExecute "select current_user()"
234+
235+
if [ "$?" == "0" ] && [ "$FORCE_REDO" -eq 0 ]; then
236+
echo "Can already connect as ${EXTRA_USER[$CONFIG]}, skipping user create"
237+
continue
238+
else
239+
CHANGES=1
240+
fi
241+
184242
for QHOST in "%" "localhost" "${HERE}"; do
185-
MYSQL_COMMAND=`echo "create user \"${EXTRA_USER[$CONFIG]}\"@\"${QHOST}\" identified ${PWDOPT} by \"${EXTRA_PWD[$CONFIG]}\";"`
186-
MYSQL_COMMANDS=${MYSQL_COMMANDS}$'\n'${MYSQL_COMMAND}
187-
echo "$MYSQL_COMMAND"
188-
MYSQL_COMMAND=`echo "grant ${EXTRA_PRIVILEGE[$CONFIG]} on $INFOLOGGER_DB_NAME.* to \"${EXTRA_USER[$CONFIG]}\"@\"${QHOST}\";"`
189-
MYSQL_COMMANDS=${MYSQL_COMMANDS}$'\n'${MYSQL_COMMAND}
190-
echo "$MYSQL_COMMAND"
243+
mysqlExecute "drop user \"${EXTRA_USER[$CONFIG]}\"@\"${QHOST}\";"
244+
mysqlExecute "create user \"${EXTRA_USER[$CONFIG]}\"@\"${QHOST}\";"
245+
mysqlExecute "set password for \"${EXTRA_USER[$CONFIG]}\"@\"${QHOST}\" = PASSWORD(\"${EXTRA_PWD[$CONFIG]}\");"
246+
mysqlExecute "grant ${EXTRA_PRIVILEGE[$CONFIG]} on $INFOLOGGER_DB_NAME.* to \"${EXTRA_USER[$CONFIG]}\"@\"${QHOST}\";"
191247
done
192248
done
193249

194-
$MYSQL_EXE -h $SQL_ROOT_HOST -u $SQL_ROOT_USER $SQL_PWD_ARG -e "$MYSQL_COMMANDS"
195250
echo "MySQL infoLogger accounts created"
196251

252+
if [ "$CHANGES" == "0" ]; then
253+
echo "No changes"
254+
fi
255+
197256
# generate a sample configuration
198257
INFOLOGGER_SAMPLE_CONFIG="# infoLogger configuration file"$'\n'$'\n'
199258
for CONFIG in "${EXTRA_CONFIG[@]}"; do

0 commit comments

Comments
 (0)