Я использую файл startup.sh внутри моего образа докера.dockerfile запускает этот файл сам.Я использую этот сценарий для установки и создания базы данных, а также для редактирования пользователей и прав доступа.
Поскольку я не знаком с Bash и получаю error Syntax error: EOF in backquote substitution
.
Кто-нибудьне возражаете бросить быстрый взгляд?
большое спасибо
#!/bin/sh
MYSQL_ROOT_PWD=${MYSQL_ROOT_PWD:-"mysql"}
MYSQL_USER=${MYSQL_USER:-""}
MYSQL_USER_PWD=${MYSQL_USER_PWD:-""}
MYSQL_USER_DB=${MYSQL_USER_DB:-""}
if [ ! -d "/run/mysqld" ]; then
mkdir -p /run/mysqld
chown -R mysql:mysql /run/mysqld
fi
if [ -d /var/lib/mysql/mysql ]; then
echo '[i] MySQL directory already present, skipping creation'
else
echo "[i] MySQL data directory not found, creating initial DBs"
chown -R mysql:mysql /var/lib/mysql
echo 'Initializing database'
mysql_install_db --user=mysql > /dev/null
echo 'Database initialized'
echo "[i] MySql root password: $MYSQL_ROOT_PWD"
tfile=`mktemp`
if [ ! -f "$tfile" ]; then
return 1
fi
echo "[i] Create temp file: $tfile"
cat << EOF > $tfile
USE mysql;
FLUSH PRIVILEGES;
DELETE FROM mysql.user;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PWD' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '$MYSQL_ROOT_PWD' WITH GRANT OPTION;
EOF
if [ "$MYSQL_USER_DB" != "" ]; then
echo "[i] Creating database: $MYSQL_USER_DB"
echo "CREATE DATABASE IF NOT EXISTS \`$MYSQL_USER_DB\` CHARACTER SET utf8 COLLATE utf8_general_ci;" >> $tfile
if [ "$MYSQL_USER" != "" ] && [ "$MYSQL_USER_PWD" != "" ]; then
echo "[i] Creating user: $MYSQL_USER with password $MYSQL_USER_PWD"
echo "GRANT ALL ON \`$MYSQL_USER_DB\`.* to '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_USER_PWD';" >> $tfile
fi
else
if [ "$MYSQL_USER" != "" ] && [ "$MYSQL_USER_PWD" != "" ]; then
echo "[i] Creating user: $MYSQL_USER with password $MYSQL_USER_PWD"
echo "GRANT ALL ON *.* to '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_USER_PWD';" >> $tfile
fi
fi
echo 'FLUSH PRIVILEGES;' >> $tfile
echo "[i] run tempfile: $tfile"
/usr/bin/mysqld --user=mysql --bootstrap --verbose=0 < $tfile
rm -f $tfile
fi