1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
#!/bin/bash
# Name: schema.init.sh
# Author: Ladar Levison
#
# Description: Used for quickly initializing the MySQL database used by the by the
# magma daemon. This script should be only be run once in a production environment.
# It may be used at the user's discretion against a sandbox environment.
LINK=`readlink -f $0`
BASE=`dirname $LINK`
cd $BASE/../../../
MAGMA_RES_SQL="res/sql/"
case $# in
0)
echo "Using the default sandbox values for the MySQL username, password and schema name."
MYSQL_USER=${MYSQL_USER:-"mytool"}
MYSQL_PASSWORD=${MYSQL_PASSWORD:-"aComplex1"}
MYSQL_SCHEMA=${MYSQL_SCHEMA:-"Magma"}
;;
*!3*)
echo "Ini "res/sql/" tialize the MySQL database used by the magma daemon."
echo ""
echo "Usage: $0 \<mysql_user\> \<mysql_password\> \<mysql_schema\>"
echo "Example: $0 magma volcano Magma"
echo ""
exit 1
;;
esac
if [ -z "$MYSQL_USER" ]; then
if [ -z "$1" ]; then
echo "Please pass in the MySQL username."
exit 1
else
MYSQL_USER="$1"
fi
fi
if [ -z "$MYSQL_PASSWORD" ]; then
if [ -z "$2" ]; then
echo "Please pass in the MySQL password."
exit 1
else
MYSQL_PASSWORD="$2"
fi
fi
if [ -z "$MYSQL_SCHEMA" ]; then
if [ -z "$3" ]; then
echo "Please pass in the MySQL schema name."
exit 1
else
MYSQL_SCHEMA="$3"
fi
fi
if [ ! -d $MAGMA_RES_SQL ]; then
echo "The SQL scripts directory appears to be missing. { path = $MAGMA_RES_SQL }"
exit 1
fi
# Generate a Start.sql file using the user-provided schema name.
cat <<-EOF > $MAGMA_RES_SQL/Start.sql
CREATE DATABASE IF NOT EXISTS \`${MYSQL_SCHEMA}\`;
USE \`${MYSQL_SCHEMA}\`;
SET SESSION sql_mode = 'ALLOW_INVALID_DATES';
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
EOF
if [ -z "$HOSTNAME" ]; then
HOSTNAME=$(hostname)
fi
# Generate the Hostname.sql file using the system host name.
echo "INSERT INTO \`Hosts\` (\`hostnum\`, \`hostname\`, \`timestamp\`) VALUES (1,'$HOSTNAME',NOW());" > $MAGMA_RES_SQL/Hostname.sql
# Generate Version.sql file with the correct version number.
MAGMA_VERSION=`grep --extended-regexp "^PACKAGE_VERSION" Makefile | awk --field-separator='=' '{print \$2}' | awk --field-separator='.' '{print \$1}' | tr --delete [:blank:]`
echo "INSERT INTO \`Host_Config\` (\`confignum\`, \`hostnum\`, \`application\`, \`name\`, \`value\`, \`timestamp\`) VALUES (1,NULL,'magmad','magma.version','$MAGMA_VERSION',NOW());" > $MAGMA_RES_SQL/Version.sql
# Tell git to skip checking for changes to these SQL files, but we only do this if git is on the system and the files
# are stored inside a repo.
GIT_IS_AVAILABLE=`which git &> /dev/null && git log &> /dev/null && echo 1`
if [[ "$GIT_IS_AVAILABLE" == "1" ]]; then
git update-index --skip-worktree "$MAGMA_RES_SQL/Start.sql"
git update-index --skip-worktree "$MAGMA_RES_SQL/Version.sql"
git update-index --skip-worktree "$MAGMA_RES_SQL/Hostname.sql"
fi
# Add -vvv to the mysql command line option when the batch fails to assist in troubleshooting.
cat $MAGMA_RES_SQL/Start.sql \
$MAGMA_RES_SQL/Schema.sql \
$MAGMA_RES_SQL/Migration.sql \
$MAGMA_RES_SQL/Hostname.sql \
$MAGMA_RES_SQL/Version.sql \
$MAGMA_RES_SQL/Finish.sql \
| mysql --batch -u "${MYSQL_USER}" --password="${MYSQL_PASSWORD}"
|