File tree Expand file tree Collapse file tree 8 files changed +76
-12
lines changed Expand file tree Collapse file tree 8 files changed +76
-12
lines changed Original file line number Diff line number Diff line change @@ -68,6 +68,9 @@ RUN mkdir -p /var/lib/mysql /var/run/mysqld \
68
68
# ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime
69
69
&& chmod 777 /var/run/mysqld
70
70
71
+ # default root to listen for connections from anywhere
72
+ ENV MYSQL_ROOT_HOST %
73
+
71
74
VOLUME /var/lib/mysql
72
75
73
76
COPY docker-entrypoint.sh /usr/local/bin/
Original file line number Diff line number Diff line change @@ -113,14 +113,27 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
113
113
export MYSQL_ROOT_PASSWORD=" $( pwgen -1 32) "
114
114
echo " GENERATED ROOT PASSWORD: $MYSQL_ROOT_PASSWORD "
115
115
fi
116
+
117
+ rootCreate=
118
+ file_env ' MYSQL_ROOT_HOST'
119
+ if [ ! -z " $MYSQL_ROOT_HOST " -a " $MYSQL_ROOT_HOST " != ' localhost' ]; then
120
+ # no, we don't care if read finds a terminating character in this heredoc
121
+ # https://unix.stackexchange.com/questions/265149/why-is-set-o-errexit-breaking-this-read-heredoc-expression/265151#265151
122
+ read -r -d ' ' rootCreate << -EOSQL || true
123
+ CREATE USER 'root'@'${MYSQL_ROOT_HOST} ' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD} ' ;
124
+ GRANT ALL ON *.* TO 'root'@'${MYSQL_ROOT_HOST} ' WITH GRANT OPTION ;
125
+ EOSQL
126
+ fi
127
+
116
128
" ${mysql[@]} " << -EOSQL
117
129
-- What's done in this file shouldn't be replicated
118
130
-- or products like mysql-fabric won't work
119
131
SET @@SESSION.SQL_LOG_BIN=0;
120
132
121
- DELETE FROM mysql.user ;
122
- CREATE USER 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD} ' ;
123
- GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ;
133
+ DELETE FROM mysql.user WHERE user NOT IN ('mysql.sys', 'mysqlxsys', 'root') OR host NOT IN ('localhost') ;
134
+ SET PASSWORD FOR 'root'@'localhost'=PASSWORD('${MYSQL_ROOT_PASSWORD} ') ;
135
+ GRANT ALL ON *.* TO 'root'@'localhost' WITH GRANT OPTION ;
136
+ ${rootCreate}
124
137
DROP DATABASE IF EXISTS test ;
125
138
FLUSH PRIVILEGES ;
126
139
EOSQL
Original file line number Diff line number Diff line change @@ -53,6 +53,9 @@ RUN { \
53
53
RUN sed -Ei 's/^(bind-address|log)/#&/' /etc/mysql/my.cnf \
54
54
&& echo '[mysqld]\n skip-host-cache\n skip-name-resolve' > /etc/mysql/conf.d/docker.cnf
55
55
56
+ # default root to listen for connections from anywhere
57
+ ENV MYSQL_ROOT_HOST %
58
+
56
59
VOLUME /var/lib/mysql
57
60
58
61
COPY docker-entrypoint.sh /usr/local/bin/
Original file line number Diff line number Diff line change @@ -113,14 +113,27 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
113
113
export MYSQL_ROOT_PASSWORD=" $( pwgen -1 32) "
114
114
echo " GENERATED ROOT PASSWORD: $MYSQL_ROOT_PASSWORD "
115
115
fi
116
+
117
+ rootCreate=
118
+ file_env ' MYSQL_ROOT_HOST'
119
+ if [ ! -z " $MYSQL_ROOT_HOST " -a " $MYSQL_ROOT_HOST " != ' localhost' ]; then
120
+ # no, we don't care if read finds a terminating character in this heredoc
121
+ # https://unix.stackexchange.com/questions/265149/why-is-set-o-errexit-breaking-this-read-heredoc-expression/265151#265151
122
+ read -r -d ' ' rootCreate << -EOSQL || true
123
+ CREATE USER 'root'@'${MYSQL_ROOT_HOST} ' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD} ' ;
124
+ GRANT ALL ON *.* TO 'root'@'${MYSQL_ROOT_HOST} ' WITH GRANT OPTION ;
125
+ EOSQL
126
+ fi
127
+
116
128
" ${mysql[@]} " << -EOSQL
117
129
-- What's done in this file shouldn't be replicated
118
130
-- or products like mysql-fabric won't work
119
131
SET @@SESSION.SQL_LOG_BIN=0;
120
132
121
- DELETE FROM mysql.user ;
122
- CREATE USER 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD} ' ;
123
- GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ;
133
+ DELETE FROM mysql.user WHERE user NOT IN ('mysql.sys', 'mysqlxsys', 'root') OR host NOT IN ('localhost') ;
134
+ SET PASSWORD FOR 'root'@'localhost'=PASSWORD('${MYSQL_ROOT_PASSWORD} ') ;
135
+ GRANT ALL ON *.* TO 'root'@'localhost' WITH GRANT OPTION ;
136
+ ${rootCreate}
124
137
DROP DATABASE IF EXISTS test ;
125
138
FLUSH PRIVILEGES ;
126
139
EOSQL
Original file line number Diff line number Diff line change @@ -53,6 +53,9 @@ RUN { \
53
53
RUN sed -Ei 's/^(bind-address|log)/#&/' /etc/mysql/mysql.conf.d/mysqld.cnf \
54
54
&& echo '[mysqld]\n skip-host-cache\n skip-name-resolve' > /etc/mysql/conf.d/docker.cnf
55
55
56
+ # default root to listen for connections from anywhere
57
+ ENV MYSQL_ROOT_HOST %
58
+
56
59
VOLUME /var/lib/mysql
57
60
58
61
COPY docker-entrypoint.sh /usr/local/bin/
Original file line number Diff line number Diff line change @@ -113,14 +113,27 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
113
113
export MYSQL_ROOT_PASSWORD=" $( pwgen -1 32) "
114
114
echo " GENERATED ROOT PASSWORD: $MYSQL_ROOT_PASSWORD "
115
115
fi
116
+
117
+ rootCreate=
118
+ file_env ' MYSQL_ROOT_HOST'
119
+ if [ ! -z " $MYSQL_ROOT_HOST " -a " $MYSQL_ROOT_HOST " != ' localhost' ]; then
120
+ # no, we don't care if read finds a terminating character in this heredoc
121
+ # https://unix.stackexchange.com/questions/265149/why-is-set-o-errexit-breaking-this-read-heredoc-expression/265151#265151
122
+ read -r -d ' ' rootCreate << -EOSQL || true
123
+ CREATE USER 'root'@'${MYSQL_ROOT_HOST} ' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD} ' ;
124
+ GRANT ALL ON *.* TO 'root'@'${MYSQL_ROOT_HOST} ' WITH GRANT OPTION ;
125
+ EOSQL
126
+ fi
127
+
116
128
" ${mysql[@]} " << -EOSQL
117
129
-- What's done in this file shouldn't be replicated
118
130
-- or products like mysql-fabric won't work
119
131
SET @@SESSION.SQL_LOG_BIN=0;
120
132
121
- DELETE FROM mysql.user ;
122
- CREATE USER 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD} ' ;
123
- GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ;
133
+ DELETE FROM mysql.user WHERE user NOT IN ('mysql.sys', 'mysqlxsys', 'root') OR host NOT IN ('localhost') ;
134
+ SET PASSWORD FOR 'root'@'localhost'=PASSWORD('${MYSQL_ROOT_PASSWORD} ') ;
135
+ GRANT ALL ON *.* TO 'root'@'localhost' WITH GRANT OPTION ;
136
+ ${rootCreate}
124
137
DROP DATABASE IF EXISTS test ;
125
138
FLUSH PRIVILEGES ;
126
139
EOSQL
Original file line number Diff line number Diff line change @@ -53,6 +53,9 @@ RUN { \
53
53
RUN sed -Ei 's/^(bind-address|log)/#&/' /etc/mysql/mysql.conf.d/mysqld.cnf \
54
54
&& echo '[mysqld]\n skip-host-cache\n skip-name-resolve' > /etc/mysql/conf.d/docker.cnf
55
55
56
+ # default root to listen for connections from anywhere
57
+ ENV MYSQL_ROOT_HOST %
58
+
56
59
VOLUME /var/lib/mysql
57
60
58
61
COPY docker-entrypoint.sh /usr/local/bin/
Original file line number Diff line number Diff line change @@ -113,14 +113,27 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
113
113
export MYSQL_ROOT_PASSWORD=" $( pwgen -1 32) "
114
114
echo " GENERATED ROOT PASSWORD: $MYSQL_ROOT_PASSWORD "
115
115
fi
116
+
117
+ rootCreate=
118
+ file_env ' MYSQL_ROOT_HOST'
119
+ if [ ! -z " $MYSQL_ROOT_HOST " -a " $MYSQL_ROOT_HOST " != ' localhost' ]; then
120
+ # no, we don't care if read finds a terminating character in this heredoc
121
+ # https://unix.stackexchange.com/questions/265149/why-is-set-o-errexit-breaking-this-read-heredoc-expression/265151#265151
122
+ read -r -d ' ' rootCreate << -EOSQL || true
123
+ CREATE USER 'root'@'${MYSQL_ROOT_HOST} ' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD} ' ;
124
+ GRANT ALL ON *.* TO 'root'@'${MYSQL_ROOT_HOST} ' WITH GRANT OPTION ;
125
+ EOSQL
126
+ fi
127
+
116
128
" ${mysql[@]} " << -EOSQL
117
129
-- What's done in this file shouldn't be replicated
118
130
-- or products like mysql-fabric won't work
119
131
SET @@SESSION.SQL_LOG_BIN=0;
120
132
121
- DELETE FROM mysql.user ;
122
- CREATE USER 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD} ' ;
123
- GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ;
133
+ DELETE FROM mysql.user WHERE user NOT IN ('mysql.sys', 'mysqlxsys', 'root') OR host NOT IN ('localhost') ;
134
+ SET PASSWORD FOR 'root'@'localhost'=PASSWORD('${MYSQL_ROOT_PASSWORD} ') ;
135
+ GRANT ALL ON *.* TO 'root'@'localhost' WITH GRANT OPTION ;
136
+ ${rootCreate}
124
137
DROP DATABASE IF EXISTS test ;
125
138
FLUSH PRIVILEGES ;
126
139
EOSQL
You can’t perform that action at this time.
0 commit comments