function generate_mysql_password {

  PASSWORD_CONTAINS_SPECIAL=false

  while [ "${PASSWORD_CONTAINS_SPECIAL}" = false ]; do
    NEW_PASSWORD="$(cat /dev/urandom | LC_ALL=C tr -dc "[:alnum:]^#@" | fold -w 28 | head -n 1)"
    if echo "${NEW_PASSWORD}" | grep '[0-9]' >/dev/null; then
      if echo "${NEW_PASSWORD}" | grep '[-^#@]' >/dev/null; then
        PASSWORD_CONTAINS_SPECIAL=true
        printf "${NEW_PASSWORD}"
        print '%s\n'
      fi
    fi
  done
}
