entrypoint.sh 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #!/bin/bash
  2. set -e
  3. # if command starts with an option, prepend mysqld
  4. if [ "${1:0:1}" = '-' ]; then
  5. set -- mysqld "$@"
  6. fi
  7. if [ "$1" = 'mysqld' ]; then
  8. # Get config
  9. DATADIR="$("$@" --verbose --help 2>/dev/null | awk '$1 == "datadir" { print $2; exit }')"
  10. if [ ! -d "$DATADIR/mysql" ]; then
  11. if [ -z "$MYSQL_ROOT_PASSWORD" -a -z "$MYSQL_ALLOW_EMPTY_PASSWORD" ]; then
  12. echo >&2 'error: database is uninitialized and MYSQL_ROOT_PASSWORD not set'
  13. echo >&2 ' Did you forget to add -e MYSQL_ROOT_PASSWORD=... ?'
  14. exit 1
  15. fi
  16. mkdir -p "$DATADIR"
  17. #chown -R mysql:mysql "$DATADIR"
  18. echo 'Running mysql_install_db'
  19. mysql_install_db --user=root --datadir="$DATADIR" --rpm
  20. echo 'Finished mysql_install_db'
  21. mysqld --user=root --datadir="$DATADIR" --skip-networking &
  22. pid="$!"
  23. mysql=( mysql --protocol=socket -uroot )
  24. for i in {30..0}; do
  25. if echo 'SELECT 1' | "${mysql[@]}" &> /dev/null; then
  26. break
  27. fi
  28. echo 'MySQL init process in progress...'
  29. sleep 1
  30. done
  31. if [ "$i" = 0 ]; then
  32. echo >&2 'MySQL init process failed.'
  33. exit 1
  34. fi
  35. # sed is for https://bugs.mysql.com/bug.php?id=20545
  36. mysql_tzinfo_to_sql /usr/share/zoneinfo | sed 's/Local time zone must be set--see zic manual page/FCTY/' | "${mysql[@]}" mysql
  37. "${mysql[@]}" <<-EOSQL
  38. -- What's done in this file shouldn't be replicated
  39. -- or products like mysql-fabric won't work
  40. SET @@SESSION.SQL_LOG_BIN=0;
  41. DELETE FROM mysql.user ;
  42. CREATE USER 'root'@'%' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}' ;
  43. GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ;
  44. DROP DATABASE IF EXISTS test ;
  45. FLUSH PRIVILEGES ;
  46. EOSQL
  47. if [ ! -z "$MYSQL_ROOT_PASSWORD" ]; then
  48. mysql+=( -p"${MYSQL_ROOT_PASSWORD}" )
  49. fi
  50. if [ "$MYSQL_DATABASE" ]; then
  51. echo "CREATE DATABASE IF NOT EXISTS \`$MYSQL_DATABASE\` ;" | "${mysql[@]}"
  52. mysql+=( "$MYSQL_DATABASE" )
  53. fi
  54. if [ "$MYSQL_USER" -a "$MYSQL_PASSWORD" ]; then
  55. echo "CREATE USER '"$MYSQL_USER"'@'%' IDENTIFIED BY '"$MYSQL_PASSWORD"' ;" | "${mysql[@]}"
  56. if [ "$MYSQL_DATABASE" ]; then
  57. echo "GRANT ALL ON \`"$MYSQL_DATABASE"\`.* TO '"$MYSQL_USER"'@'%' ;" | "${mysql[@]}"
  58. fi
  59. echo 'FLUSH PRIVILEGES ;' | "${mysql[@]}"
  60. fi
  61. if ! kill -s TERM "$pid" || ! wait "$pid"; then
  62. echo >&2 'MySQL init process failed.'
  63. exit 1
  64. fi
  65. echo
  66. echo 'MySQL init process done. Ready for start up.'
  67. echo
  68. fi
  69. #chown -R mysql:mysql "$DATADIR"
  70. fi
  71. mysqld --user=root --datadir="$DATADIR"
  72. #exec "$@"