首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在dockerfile中设置mysql用户名

问如何在dockerfile中设置mysql用户名
EN

Stack Overflow用户
提问于 2015-08-22 00:55:00
回答 2查看 10.5K关注 0票数 8

使用apt-get install mysql-server在ubuntu中安装mysql时,安装过程中会询问mysql的用户名和密码。

但是,当使用dockerfile构建mysql镜像时,如何提供用户名和密码?

我尝试使用dockerfile,如下所示:

代码语言:javascript
复制
FROM ubuntu:14.04
apt-get update
apt-get install -y mysql-server

但在构建镜像时,我发现我们可以在没有用户名和密码的情况下登录mysql。

使用dockerfile构建镜像时,如何设置用户名和密码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-22 02:15:28

如果你看看Docker官方的MySQL镜像Dockerfile,你会发现他们是如何使用debconf-set-selections做到这一点的。

相关说明如下:

代码语言:javascript
复制
RUN { \
        echo mysql-community-server mysql-community-server/data-dir select ''; \
        echo mysql-community-server mysql-community-server/root-pass password ''; \
        echo mysql-community-server mysql-community-server/re-root-pass password ''; \
        echo mysql-community-server mysql-community-server/remove-test-db select false; \
    } | debconf-set-selections \
    && apt-get update && apt-get install -y mysql-server

debconf-set-selections是一种工具,允许您为稍后安装过程中将提出的问题准备答案。

票数 14
EN

Stack Overflow用户

发布于 2015-08-22 01:09:16

tutumcloud/mysql

Dockerfile

代码语言:javascript
复制
ADD run.sh /run.sh

ENV MYSQL_USER=admin \
    MYSQL_PASS=**Random** \
    ON_CREATE_DB=**False** \
    REPLICATION_MASTER=**False** \
    REPLICATION_SLAVE=**False** \
    REPLICATION_USER=replica \
    REPLICATION_PASS=replica

run.sh

代码语言:javascript
复制
StartMySQL ()
{
    /usr/bin/mysqld_safe ${EXTRA_OPTS} > /dev/null 2>&1 &
    # Time out in 1 minute
    LOOP_LIMIT=60
    for (( i=0 ; ; i++ )); do
        if [ ${i} -eq ${LOOP_LIMIT} ]; then
            echo "Time out. Error log is shown as below:"
            tail -n 100 ${LOG}
            exit 1
        fi
        echo "=> Waiting for confirmation of MySQL service startup, trying ${i}/${LOOP_LIMIT} ..."
        sleep 1
        mysql -uroot -e "status" > /dev/null 2>&1 && break
    done
}
CreateMySQLUser()
{
    if [ "$MYSQL_PASS" = "**Random**" ]; then
        unset MYSQL_PASS
    fi

    PASS=${MYSQL_PASS:-$(pwgen -s 12 1)}
    _word=$( [ ${MYSQL_PASS} ] && echo "preset" || echo "random" )
    echo "=> Creating MySQL user ${MYSQL_USER} with ${_word} password"

    mysql -uroot -e "CREATE USER '${MYSQL_USER}'@'%' IDENTIFIED BY '$PASS'"
    mysql -uroot -e "GRANT ALL PRIVILEGES ON *.* TO '${MYSQL_USER}'@'%' WITH GRANT OPTION"
    echo "=> Done!"
    echo "========================================================================"
    echo "You can now connect to this MySQL Server using:"
    echo ""
    echo "    mysql -u$MYSQL_USER -p$PASS -h<host> -P<port>"
    echo ""
    echo "Please remember to change the above password as soon as possible!"
    echo "MySQL user 'root' has no password but only allows local connections"
    echo "========================================================================"
}
StartMySQL
CreateMySQLUser

适用的.....helpful

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32145650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档