commit: 230727ca970a327e9338829cdff30c98973e8928 Author: Brian Evans <grknight <AT> gentoo <DOT> org> AuthorDate: Fri Sep 18 17:32:46 2015 +0000 Commit: Brian Evans <grknight <AT> gentoo <DOT> org> CommitDate: Fri Sep 18 17:32:46 2015 +0000 URL: https://gitweb.gentoo.org/proj/mysql.git/commit/?id=230727ca
Update initialization for MySQL 5.7 now that mysql_install_db is gone Signed-off-by: Brian Evans <grknight <AT> gentoo.org> eclass/mysql-multilib.eclass | 54 ++++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 22 deletions(-) diff --git a/eclass/mysql-multilib.eclass b/eclass/mysql-multilib.eclass index ff701df..16c320f 100644 --- a/eclass/mysql-multilib.eclass +++ b/eclass/mysql-multilib.eclass @@ -1056,16 +1056,32 @@ mysql-multilib_pkg_config() { fi pushd "${TMPDIR}" &>/dev/null - #cmd="'${EROOT}/usr/share/mysql/scripts/mysql_install_db' '--basedir=${EPREFIX}/usr' ${options}" - cmd=${EROOT}usr/share/mysql/scripts/mysql_install_db - [[ -f ${cmd} ]] || cmd=${EROOT}usr/bin/mysql_install_db + + # Filling timezones, see + # http://dev.mysql.com/doc/mysql/en/time-zone-support.html + "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null + + local cmd + if [[ ${PN} == "mysql" || ${PN} == "percona-server" ]] && mysql_version_is_at_least "5.7.6" ; then + # --initialize-insecure will not set root password + # --initialize would set a random one in the log which we don't need as we set it ourselves + cmd="${EROOT}usr/sbin/mysqld" + options="${options} --initialize-insecure '--init-file=${sqltmp}'" + sqltmp="" # the initialize will take care of it + else + cmd="${EROOT}usr/share/mysql/scripts/mysql_install_db" + [[ -f "${cmd}" ]] || cmd="${EROOT}usr/bin/mysql_install_db" + if [[ -r "${help_tables}" ]] ; then + cat "${help_tables}" >> "${sqltmp}" + fi + fi cmd="'$cmd' '--basedir=${EPREFIX}/usr' ${options} '--datadir=${ROOT}/${MY_DATADIR}' '--tmpdir=${ROOT}/${MYSQL_TMPDIR}'" einfo "Command: $cmd" eval $cmd \ >"${TMPDIR}"/mysql_install_db.log 2>&1 if [ $? -ne 0 ]; then grep -B5 -A999 -i "ERROR" "${TMPDIR}"/mysql_install_db.log 1>&2 - die "Failed to run mysql_install_db. Please review ${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log" + die "Failed to initialize mysqld. Please review ${EPREFIX}/var/log/mysql/mysqld.err AND ${TMPDIR}/mysql_install_db.log" fi popd &>/dev/null [[ -f "${ROOT}/${MY_DATADIR}/mysql/user.frm" ]] \ @@ -1073,14 +1089,6 @@ mysql-multilib_pkg_config() { chown -R mysql:mysql "${ROOT}/${MY_DATADIR}" 2>/dev/null chmod 0750 "${ROOT}/${MY_DATADIR}" 2>/dev/null - # Filling timezones, see - # http://dev.mysql.com/doc/mysql/en/time-zone-support.html - "${EROOT}/usr/bin/mysql_tzinfo_to_sql" "${EROOT}/usr/share/zoneinfo" > "${sqltmp}" 2>/dev/null - - if [[ -r "${help_tables}" ]] ; then - cat "${help_tables}" >> "${sqltmp}" - fi - local socket="${EROOT}/var/run/mysqld/mysqld${RANDOM}.sock" local pidfile="${EROOT}/var/run/mysqld/mysqld${RANDOM}.pid" local mysqld="${EROOT}/usr/sbin/mysqld \ @@ -1120,16 +1128,18 @@ mysql-multilib_pkg_config() { -e "${sql}" eend $? - ebegin "Loading \"zoneinfo\", this step may require a few seconds" - "${EROOT}/usr/bin/mysql" \ - --socket=${socket} \ - -hlocalhost \ - -uroot \ - --password="${MYSQL_ROOT_PASSWORD}" \ - mysql < "${sqltmp}" - rc=$? - eend $? - [[ $rc -ne 0 ]] && ewarn "Failed to load zoneinfo!" + if [[ -n "${sqltmp}" ]] ; then + ebegin "Loading \"zoneinfo\", this step may require a few seconds" + "${EROOT}/usr/bin/mysql" \ + --socket=${socket} \ + -hlocalhost \ + -uroot \ + --password="${MYSQL_ROOT_PASSWORD}" \ + mysql < "${sqltmp}" + rc=$? + eend $? + [[ $rc -ne 0 ]] && ewarn "Failed to load zoneinfo!" + fi # Stop the server and cleanup einfo "Stopping the server ..."