【MySQL】关于MySQL 5.6官方镜像docker-entrypoint.sh分析

# cat test.sh

##############################################

#!/bin/bash

MYSQL_ROOT_PASSWORD="MySQL@123"

mysql=( mysql --protocol=socket -uroot )

echo  ${mysql[@]}

mysql+=( -p"${MYSQL_ROOT_PASSWORD}" )

echo  ${mysql[@]}

"${mysql[@]}" <<-EOSQL

  -- What's done in this file shouldn't be replicated

  --  or products like mysql-fabric won't work

  SET @@SESSION.SQL_LOG_BIN=0;

  DELETE FROM mysql.user ;

  CREATE USER 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}' ;

  GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ;

  DROP DATABASE IF EXISTS test ;

  FLUSH PRIVILEGES ;

EOSQL

################################################





# cat docker-entrypoint.sh

####################################################

#!/bin/sh

set -e

umask 0077

mysql=( mysql --protocol=socket -uroot )

if [ -z "$(ls -A /var/lib/mysql)" ]; then

    if [ -z "${MYSQL_ROOT_PASSWORD}" ]; then

        mysqld --initialize-insecure --user=mysql

    else

        mysqld --initialize-insecure --user=mysql

        mysqld &

        mysqld_pid="$!"

        for i in {15..0}; do

            if echo 'SELECT 1' | "${mysql[@]}" &> /dev/null; then

                mysql -u root --skip-password -e "alter user root@'localhost' identified by \"${MYSQL_ROOT_PASSWORD}\";"

                mysql -u root  -p"${MYSQL_ROOT_PASSWORD}" -e "flush privileges;"

                break

            fi

            echo 'MySQL init process in progress...'

            sleep 1

        done

        if [ "$i" = 0 ]; then

            echo >&2 'MySQL init process failed.'

            exit 1

        fi

    fi

fi

if ! kill -s TERM "$mysqld_pid" || ! wait "$mysqld_pid"; then

    echo >&2 'MySQL init process failed.'

    exit 1

fi

exec "$@"

#####################################################




参考


关于cat >file 、cat <file <<EOF、cat <<-EOF的区别

//www.greatytc.com/p/48dae9d68365


MySQL 5.6官方镜像docker-entrypoint.sh分析

https://www.cnblogs.com/ivictor/p/4832832.html

https://github.com/docker-library/mysql/tree/5836bc9af9deb67b68c32bebad09a0f7513da36e/5.6

https://github.com/mysql/mysql-docker/blob/mysql-server/5.7/docker-entrypoint.sh

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。