@@ -18,6 +18,28 @@ for arg; do
18
18
esac
19
19
done
20
20
21
+ # usage: file_env VAR [DEFAULT]
22
+ # ie: file_env 'XYZ_DB_PASSWORD' 'example'
23
+ # (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of
24
+ # "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)
25
+ file_env () {
26
+ local var=" $1 "
27
+ local fileVar=" ${var} _FILE"
28
+ local def=" ${2:- } "
29
+ if [ " ${! var:- } " ] && [ " ${! fileVar:- } " ]; then
30
+ echo >&2 " error: both $var and $fileVar are set (but are exclusive)"
31
+ exit 1
32
+ fi
33
+ local val=" $def "
34
+ if [ " ${! var:- } " ]; then
35
+ val=" ${! var} "
36
+ elif [ " ${! fileVar:- } " ]; then
37
+ val=" $( < " ${! fileVar} " ) "
38
+ fi
39
+ export " $var " =" $val "
40
+ unset " $fileVar "
41
+ }
42
+
21
43
_check_config () {
22
44
toRun=( " $@ " --verbose --help )
23
45
if ! errors=" $( " ${toRun[@]} " 2>&1 > /dev/null) " ; then
@@ -52,6 +74,7 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
52
74
DATADIR=" $( _datadir " $@ " ) "
53
75
54
76
if [ ! -d " $DATADIR /mysql" ]; then
77
+ file_env ' MYSQL_ROOT_PASSWORD'
55
78
if [ -z " $MYSQL_ROOT_PASSWORD " -a -z " $MYSQL_ALLOW_EMPTY_PASSWORD " -a -z " $MYSQL_RANDOM_ROOT_PASSWORD " ]; then
56
79
echo >&2 ' error: database is uninitialized and password option is not specified '
57
80
echo >&2 ' You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD'
@@ -87,7 +110,7 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
87
110
fi
88
111
89
112
if [ ! -z " $MYSQL_RANDOM_ROOT_PASSWORD " ]; then
90
- MYSQL_ROOT_PASSWORD=" $( pwgen -1 32) "
113
+ export MYSQL_ROOT_PASSWORD=" $( pwgen -1 32) "
91
114
echo " GENERATED ROOT PASSWORD: $MYSQL_ROOT_PASSWORD "
92
115
fi
93
116
" ${mysql[@]} " << -EOSQL
@@ -106,11 +129,14 @@ if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then
106
129
mysql+=( -p" ${MYSQL_ROOT_PASSWORD} " )
107
130
fi
108
131
132
+ file_env ' MYSQL_DATABASE'
109
133
if [ " $MYSQL_DATABASE " ]; then
110
134
echo " CREATE DATABASE IF NOT EXISTS \` $MYSQL_DATABASE \` ;" | " ${mysql[@]} "
111
135
mysql+=( " $MYSQL_DATABASE " )
112
136
fi
113
137
138
+ file_env ' MYSQL_USER'
139
+ file_env ' MYSQL_PASSWORD'
114
140
if [ " $MYSQL_USER " -a " $MYSQL_PASSWORD " ]; then
115
141
echo " CREATE USER '$MYSQL_USER '@'%' IDENTIFIED BY '$MYSQL_PASSWORD ' ;" | " ${mysql[@]} "
116
142
0 commit comments