first push
This commit is contained in:
125
mysql-cluster/docker-entrypoint.sh
Normal file
125
mysql-cluster/docker-entrypoint.sh
Normal file
@@ -0,0 +1,125 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
if [[ (! -z "${MYSQL_DAEMON_USER}" ) && ( "${MYSQL_DAEMON_USER}" != "root" ) ]]; then
|
||||
useradd -r -s /bin/false $MYSQL_DAEMON_USER
|
||||
if [[ ! -z "${MYSQL_DAEMON_USER_UID}" ]]; then
|
||||
usermod -u $MYSQL_DAEMON_USER_UID $MYSQL_DAEMON_USER
|
||||
fi
|
||||
if [[ ! -z "${MYSQL_DAEMON_USER_GID}" ]]; then
|
||||
groupmod -g $MYSQL_DAEMON_USER_GID $MYSQL_DAEMON_USER
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -d "/usr/mysql-cluster" ]; then
|
||||
mkdir -p /usr/mysql-cluster
|
||||
fi
|
||||
|
||||
if [ ! -d "/var/lib/mysql" ]; then
|
||||
mkdir -p /var/lib/mysql
|
||||
fi
|
||||
|
||||
if [ ! -d "/var/run/mysqld" ]; then
|
||||
mkdir -p /var/run/mysqld
|
||||
fi
|
||||
|
||||
if [[ ( "${MYSQLD_CLUSTER}" = "true" ) ]]; then
|
||||
DBEXIST=1
|
||||
if [ ! -d "/var/lib/mysql/mysql" ]; then
|
||||
DBEXIST=0
|
||||
echo "Creating mysqld system tables"
|
||||
mysqld --initialize-insecure
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Chowning Data"
|
||||
if [[ ! -z "${MYSQL_DAEMON_USER}" ]]; then
|
||||
chown -R $(id -u ${MYSQL_DAEMON_USER}):$(id -g ${MYSQL_DAEMON_USER}) /var/lib/mysql
|
||||
chown -R $(id -u ${MYSQL_DAEMON_USER}):$(id -g ${MYSQL_DAEMON_USER}) /usr/mysql-cluster
|
||||
chown -R $(id -u ${MYSQL_DAEMON_USER}):$(id -g ${MYSQL_DAEMON_USER}) /var/run/mysqld
|
||||
else
|
||||
chown -R $(id -u):$(id -g) /var/lib/mysql
|
||||
chown -R $(id -u):$(id -g) /usr/mysql-cluster
|
||||
chown -R $(id -u):$(id -g) /var/run/mysqld
|
||||
fi
|
||||
|
||||
|
||||
|
||||
if [[ ! -z "${MYSQL_DAEMON_USER}" ]]; then
|
||||
if [[ ( "${MYSQLD_CLUSTER}" = "true" ) ]]; then
|
||||
runuser -u ${MYSQL_DAEMON_USER} -- $@ --socket=/tmp/mysql.sock --bind-address=0.0.0.0 &
|
||||
else
|
||||
runuser -u ${MYSQL_DAEMON_USER} -- $@ &
|
||||
fi
|
||||
else
|
||||
if [[ ( "${MYSQLD_CLUSTER}" = "true" ) ]]; then
|
||||
sed -i "s/.*user=.*/user=root/" /etc/my.cnf #needed to change the user option otherwise mysqld doesn't start in root mode
|
||||
$@ --user=root --socket=/tmp/mysql.sock -bind-address=0.0.0.0 &
|
||||
else
|
||||
$@ &
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z "${MYSQLD_CLUSTER_NOPASS}" ]]; then
|
||||
MYSQLD_CLUSTER_NOPASS="false"
|
||||
fi
|
||||
|
||||
|
||||
if [[ ($DBEXIST -eq 0) && ( "${MYSQLD_CLUSTER}" = "true" ) && ( "${MYSQLD_CLUSTER_NOPASS}" = "false" )]]; then
|
||||
|
||||
sleep 10
|
||||
|
||||
echo "Trying to set DB Root Password"
|
||||
MYSQLSTARTED=0
|
||||
FIRSTPHASE=0;
|
||||
SECONDPHASE=0;
|
||||
|
||||
PASSWORD="default"
|
||||
|
||||
if [[ ! -z "${MYSQLD_ROOT_PASSWORD}" ]]; then
|
||||
PASSWORD="${MYSQLD_ROOT_PASSWORD}"
|
||||
fi
|
||||
|
||||
if [[ ! -z "${MYSQLD_ROOT_PASSWORD_FILE}" ]]; then
|
||||
PASSWORD="$(cat ${MYSQLD_ROOT_PASSWORD_FILE})"
|
||||
fi
|
||||
|
||||
while [[ $MYSQLSTARTED -eq 0 ]]
|
||||
do
|
||||
RESULT=""
|
||||
|
||||
mysql -u root -e "CREATE USER 'root'@'%' IDENTIFIED BY '${PASSWORD}';GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';" --socket=/tmp/mysql.sock
|
||||
if [ $? -ne 0 ]; then
|
||||
RESULT=$(mysql --socket=/tmp/mysql.sock -u root -e "SELECT 1 FROM mysql.user WHERE user = 'root' AND host = '%';")
|
||||
if [[ (! -z "${RESULT}") && ( $? -eq 0 ) ]]; then
|
||||
mysql -u root -e "ALTER USER 'root'@'%' IDENTIFIED BY '${PASSWORD}';" --socket=/tmp/mysql.sock
|
||||
if [ $? -eq 0 ]; then
|
||||
FIRSTPHASE=1;
|
||||
fi
|
||||
fi
|
||||
else
|
||||
FIRSTPHASE=1;
|
||||
fi
|
||||
|
||||
if [[ $FIRSTPHASE -eq 1 ]]; then
|
||||
mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${PASSWORD}';FLUSH PRIVILEGES;" --socket=/tmp/mysql.sock
|
||||
if [ $? -eq 0 ]; then
|
||||
SECONDPHASE=1;
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
if [[ ( $FIRSTPHASE -eq 1 ) && ( $SECONDPHASE -eq 1 )]]; then
|
||||
MYSQLSTARTED=1
|
||||
echo "DB Root Password set"
|
||||
else
|
||||
echo "Retrying to set DB Root Password in 10 sec"
|
||||
sleep 10
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
wait
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user