File tree Expand file tree Collapse file tree 4 files changed +91
-3
lines changed Expand file tree Collapse file tree 4 files changed +91
-3
lines changed Original file line number Diff line number Diff line change @@ -15,8 +15,9 @@ if [ -z "$(ls -A /var/lib/mysql)" -a "${1%_safe}" = 'mysqld' ]; then
1515 # TODO proper SQL escaping on ALL the things D:
1616 TEMP_FILE=' /tmp/mysql-first-time.sql'
1717 cat > " $TEMP_FILE " << -EOSQL
18- UPDATE mysql.user SET host = "%", password = PASSWORD("${MYSQL_ROOT_PASSWORD} ") WHERE user = "root" LIMIT 1 ;
19- DELETE FROM mysql.user WHERE user != "root" OR host != "%" ;
18+ DELETE FROM mysql.user ;
19+ CREATE USER 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD} ' ;
20+ GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ;
2021 DROP DATABASE IF EXISTS test ;
2122 EOSQL
2223
Original file line number Diff line number Diff line change 1+ FROM debian:wheezy
2+
3+ # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
4+ RUN groupadd -r mysql && useradd -r -g mysql mysql
5+
6+ RUN apt-get update && apt-get install -y \
7+ bison \
8+ build-essential \
9+ cmake \
10+ curl \
11+ libncurses5-dev
12+
13+ ENV MYSQL_MAJOR 5.7
14+ ENV MYSQL_VERSION 5.7.4-m14
15+
16+ RUN mkdir /usr/src/mysql \
17+ && curl -SL "https://dev.mysql.com/get/Downloads/MySQL-$MYSQL_MAJOR/mysql-$MYSQL_VERSION.tar.gz" \
18+ | tar -xzC /usr/src/mysql --strip-components=1 \
19+ && cd /usr/src/mysql \
20+ && cmake . -DCMAKE_BUILD_TYPE=Release \
21+ -DWITH_EMBEDDED_SERVER=OFF \
22+ && make -j"$(nproc)" \
23+ && make test \
24+ && make install \
25+ && cd .. \
26+ && rm -rf mysql \
27+ && rm -rf /usr/local/mysql/mysql-test \
28+ && rm -rf /usr/local/mysql/sql-bench \
29+ && find /usr/local/mysql -type f -name "*.a" -delete \
30+ && { find /usr/local/mysql -type f -executable -exec strip --strip-all '{}' + || true; }
31+ ENV PATH $PATH:/usr/local/mysql/bin:/usr/local/mysql/scripts
32+
33+ WORKDIR /usr/local/mysql
34+ VOLUME /var/lib/mysql
35+
36+ ADD docker-entrypoint.sh /entrypoint.sh
37+ ENTRYPOINT ["/entrypoint.sh" ]
38+
39+ EXPOSE 3306
40+ CMD ["mysqld" , "--datadir=/var/lib/mysql" , "--user=mysql" ]
Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+ set -e
3+
4+ if [ -z " $( ls -A /var/lib/mysql) " -a " ${1% _safe} " = ' mysqld' ]; then
5+ if [ -z " $MYSQL_ROOT_PASSWORD " ]; then
6+ echo >&2 ' error: database is uninitialized and MYSQL_ROOT_PASSWORD not set'
7+ echo >&2 ' Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?'
8+ exit 1
9+ fi
10+
11+ mysql_install_db --user=mysql --datadir=/var/lib/mysql
12+
13+ # These statements _must_ be on individual lines, and _must_ end with
14+ # semicolons (no line breaks or comments are permitted).
15+ # TODO proper SQL escaping on ALL the things D:
16+ TEMP_FILE=' /tmp/mysql-first-time.sql'
17+ cat > " $TEMP_FILE " << -EOSQL
18+ DELETE FROM mysql.user ;
19+ CREATE USER 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD} ' ;
20+ GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ;
21+ DROP DATABASE IF EXISTS test ;
22+ EOSQL
23+
24+ if [ " $MYSQL_DATABASE " ]; then
25+ echo " CREATE DATABASE IF NOT EXISTS $MYSQL_DATABASE ;" >> " $TEMP_FILE "
26+ fi
27+
28+ if [ " $MYSQL_USER " -a " $MYSQL_PASSWORD " ]; then
29+ echo " CREATE USER '$MYSQL_USER '@'%' IDENTIFIED BY '$MYSQL_PASSWORD ' ;" >> " $TEMP_FILE "
30+
31+ if [ " $MYSQL_DATABASE " ]; then
32+ echo " GRANT ALL ON $MYSQL_DATABASE .* TO '$MYSQL_USER '@'%' ;" >> " $TEMP_FILE "
33+ fi
34+ fi
35+
36+ echo ' FLUSH PRIVILEGES ;' >> " $TEMP_FILE "
37+
38+ set -- " $@ " --init-file=" $TEMP_FILE "
39+ fi
40+
41+ chown -R mysql:mysql /var/lib/mysql
42+ exec " $@ "
Original file line number Diff line number Diff line change @@ -17,7 +17,12 @@ echo '# maintainer: InfoSiftr <github@infosiftr.com> (@infosiftr)'
1717for version in " ${versions[@]} " ; do
1818 commit=" $( git log -1 --format=' format:%H' " $version " ) "
1919 fullVersion=" $( grep -m1 ' ENV MYSQL_VERSION ' " $version /Dockerfile" | cut -d' ' -f3) "
20- versionAliases=( $fullVersion $version ${aliases[$version]} )
20+ versionAliases=()
21+ while [ " $fullVersion " != " $version " -a " ${fullVersion% [.-]* } " != " $fullVersion " ]; do
22+ versionAliases+=( $fullVersion )
23+ fullVersion=" ${fullVersion% [.-]* } "
24+ done
25+ versionAliases+=( $version ${aliases[$version]} )
2126
2227 echo
2328 for va in " ${versionAliases[@]} " ; do
You can’t perform that action at this time.
0 commit comments