[SDC-29] rebase continue work to align source
[sdc.git] / test-apis-ci / src / test / resources / CI / tests / getResourceArtifactListTest / scripts / start_mysql.sh
1 #!/bin/bash
2
3 echo "------------------------ ENV ------------------------"
4 echo "ENV VAR USED VOLUME_HOME : $VOLUME_HOME"
5 echo "ENV VAR USED PORT        : $PORT"
6 echo "ENV VAR USED DB_NAME     : $DB_NAME"
7 echo "ENV VAR USED DB_USER     : $DB_USER"
8 echo "ENV VAR USED DB_PASSWORD : $DB_PASSWORD"
9 echo "---------------------------- ------------------------"
10
11 CURRENT_PATH=`dirname "$0"`
12
13 function StartMySQL {
14   echo "Starting MYSQL..."
15   sudo /etc/init.d/mysql stop
16   sudo /usr/bin/mysqld_safe > /dev/null 2>&1 &
17   RET=1
18   while [[ RET -ne 0 ]]; do
19     echo "=> Waiting for confirmation of MySQL service startup"
20     sleep 5
21     sudo mysql -uroot -e "status" > /dev/null 2>&1
22     RET=$?
23   done
24 }
25
26 function AllowFileSystemToMySQL {
27   MYSQL_DATA_DIR=$VOLUME_HOME/data
28   MYSQL_LOG=$VOLUME_HOME/logs
29
30   echo "Setting data directory to $MYSQL_DATA_DIR an logs to $MYSQL_LOG ..."
31   if sudo test ! -d $MYSQL_DATA_DIR; then
32     echo "Creating DATA dir > $MYSQL_DATA_DIR ..."
33     sudo mkdir -p $MYSQL_DATA_DIR
34     # mysql as owner and group owner
35     sudo chown -R mysql:mysql $MYSQL_DATA_DIR
36   fi
37   if sudo test ! -d $MYSQL_LOG; then
38     echo "Creating LOG dir > $MYSQL_LOG ..."
39     sudo mkdir -p $MYSQL_LOG
40     # mysql as owner and group owner
41     sudo chown -R mysql:mysql $MYSQL_LOG
42   fi
43
44   # edit app mysql permission in : /etc/apparmor.d/usr.sbin.mysqld
45   COUNT_LINE=`sudo cat /etc/apparmor.d/usr.sbin.mysqld | wc -l`
46   sudo sed -i "$(($COUNT_LINE)) i $MYSQL_DATA_DIR/ r," /etc/apparmor.d/usr.sbin.mysqld
47   sudo sed -i "$(($COUNT_LINE)) i $MYSQL_DATA_DIR/** rwk," /etc/apparmor.d/usr.sbin.mysqld
48   sudo sed -i "$(($COUNT_LINE)) i $MYSQL_LOG/ r," /etc/apparmor.d/usr.sbin.mysqld
49   sudo sed -i "$(($COUNT_LINE)) i $MYSQL_LOG/** rwk," /etc/apparmor.d/usr.sbin.mysqld
50
51   # reload app permission manager service
52   sudo service apparmor reload
53 }
54
55 function UpdateMySQLConf {
56   echo "Updating MySQL conf files [DATA, LOGS]..."
57   sudo sed -i "s:/var/lib/mysql:$MYSQL_DATA_DIR:g" /etc/mysql/my.cnf
58   sudo sed -i "s:/var/log/mysql/error.log:$MYSQL_LOG/error.log:g" /etc/mysql/my.cnf
59   sudo sed -i "s:3306:$PORT:g" /etc/mysql/my.cnf
60
61   if sudo test ! -f /usr/share/mysql/my-default.cnf; then
62     sudo cp /etc/mysql/my.cnf /usr/share/mysql/my-default.cnf
63   fi
64   if sudo test ! -f /etc/mysql/conf.d/mysqld_charset.cnf; then
65     sudo cp $configs/mysqld_charset.cnf /etc/mysql/conf.d/mysqld_charset.cnf
66   fi
67
68   if [ "$BIND_ADRESS" == "true" ]; then
69     sudo sed -i "s/bind-address.*/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
70   fi
71 }
72
73 function InitMySQLDb {
74   # create database DB_NAME
75   if [ "$DB_NAME" ]; then
76     echo "INIT DATABASE $DB_NAME"
77     sudo mysql -u root -e "CREATE DATABASE $DB_NAME";
78   fi
79
80   # create user and give rights
81   if [ "$DB_USER" ]; then
82     echo "CREATE USER $DB_USER WITH PASSWORD $DB_PASSWORD AND GRAND RIGHTS ON $DB_NAME"
83     sudo mysql -uroot -e "CREATE USER '${DB_USER}'@'%' IDENTIFIED BY '$DB_PASSWORD'"
84     sudo mysql -uroot -e "GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'%' WITH GRANT OPTION"
85     sudo mysql -uroot -e "FLUSH PRIVILEGES"
86   fi
87 }
88
89 # Create a new database path to the attched volume
90 if sudo test ! -d $VOLUME_HOME/data; then
91   echo "=> An empty or uninitialized MySQL volume is detected in $VOLUME_HOME/data"
92   AllowFileSystemToMySQL
93   UpdateMySQLConf
94   echo "=> Init new database path to $MYSQL_DATA_DIR"
95   sudo mysql_install_db --basedir=/usr --datadir=$MYSQL_DATA_DIR
96   echo "=> MySQL database initialized !"
97 else
98   echo "=> Using an existing volume of MySQL"
99   AllowFileSystemToMySQL
100   UpdateMySQLConf
101 fi
102
103 # Finally start MySQL with new configuration
104 StartMySQL
105 InitMySQLDb