diff --git a/docker/init.sh b/docker/init.sh
index a363a37ab168c144c4aef3d377c41e37556c90fd..14f1f91f9b19f8b25e5ec6567b8446509da6c7b7 100755
--- a/docker/init.sh
+++ b/docker/init.sh
@@ -26,6 +26,8 @@
 # 2024-09-20  v1.19 <www.axel-hahn.de>        detect dockerd-rootless (hides menu item to set permissions)
 # 2024-10-16  v1.20 <axel.hahn@unibe.ch>      add db import and export
 # 2024-10-25  v1.21 <axel.hahn@unibe.ch>      create missing subdir dbdumps
+# 2024-10-30  v1.22 <axel.hahn@unibe.ch>      added: Open Mysql client in container
+# 2024-10-30  v1.23 <axel.hahn@unibe.ch>      added: show menu hints why some menu items are visible
 # ======================================================================
 
 cd "$( dirname "$0" )" || exit 1
@@ -39,7 +41,7 @@ _self=$( basename "$0" )
 # shellcheck source=/dev/null
 . "${_self}.cfg" || exit 1
 
-_version="1.21"
+_version="1.23"
 
 # git@git-repo.iml.unibe.ch:iml-open-source/docker-php-starterkit.git
 selfgitrepo="docker-php-starterkit.git"
@@ -66,6 +68,7 @@ DC_CONFIG_CHANGED=0
 DC_WEB_URL=""
 
 DC_DUMP_DIR=dbdumps
+DC_SHOW_MENUHINTS=0
 
 isDockerRootless=0
 ps -ef | grep  dockerd-rootless | grep -q $USER && isDockerRootless=1
@@ -107,11 +110,15 @@ function _getStatus_docker(){
     if [ "$DB_ADD" != "false" ] && [ ! -d "${DC_DUMP_DIR}" ]; then
         echo "INFO: creating subdir ${DC_DUMP_DIR} to import/ export databases ..."
         mkdir "${DC_DUMP_DIR}" || exit 1
-    return
-fi
+        return
+    fi
 
 }
 
+# Get web url of the application
+# It is for support of Nginx Docker Proxy
+# https://github.com/axelhahn/nginx-docker-proxy
+# It returns http://localhost:<port> or a https://<appname>
 function _getWebUrl(){
     DC_WEB_URL="$frontendurl"
     grep -q "${APP_NAME}-server" /etc/hosts && DC_WEB_URL="https://${APP_NAME}-server/"
@@ -137,6 +144,15 @@ function  _key(){
     echo -en "\e[4;7m ${1} \e[0m"
 }
 
+# helper for menu: show hint text
+# param  int      FLag _bAll (i true the txt will be hidden)
+# param  string   message to show
+function menuhint(){
+    local _bAll="$1"
+    shift 1
+    test $DC_SHOW_MENUHINTS -ne 0 && test "$_bAll" -eq "0" && ( echo -e "$fgBlue  $*$fgReset" )
+}
+
 # show menu in interactive mode and list keys in help with param -h
 # param  string  optional: set to "all" to show all menu items
 function showMenu(){
@@ -148,44 +164,60 @@ function showMenu(){
 
     echo
     if [ $DC_REPO -eq 1 ] || [ $_bAll -eq 1 ]; then
+        menuhint $_bAll "Git data of starterkit were found"
         echo "${_spacer}$( _key g ) - remove git data of starterkit"
         echo
     fi
 
     if [ $isDockerRootless -eq 1 ] || [ $_bAll -eq 1 ]; then
+        menuhint $_bAll "Beause rootless docker was found"
         echo "${_spacer}$( _key i ) - init application: set permissions"
+        echo
     fi
 
     if [ $DC_CONFIG_CHANGED -eq 1 ] || [ $_bAll -eq 1 ]; then
+        menuhint $_bAll "Config was changed"
         echo "${_spacer}$( _key t ) - generate files from templates"
+        echo
     fi
     if [ $DC_CONFIG_CHANGED -eq 0 ] || [ $_bAll -eq 1 ]; then
+        menuhint $_bAll "Config is unchanged"
         echo "${_spacer}$( _key T ) - remove generated files"
+        echo
     fi
-    echo
     if [ $DC_WEB_UP -eq 0 ] || [ $DC_DB_UP -eq 0 ] || [ $_bAll -eq 1 ]; then
         if [ $DC_CONFIG_CHANGED -eq 0 ] || [ $_bAll -eq 1 ]; then
+            menuhint $_bAll "A container is down and config is unchanged"
             echo "${_spacer}$( _key u ) - startup containers    docker-compose ... up -d"
             echo "${_spacer}$( _key U ) - startup containers    docker-compose ... up -d --build"
             echo
             echo "${_spacer}$( _key r ) - remove containers     docker-compose rm -f"
+            echo
         fi
     fi
     if [ $DC_WEB_UP -eq 1 ] || [ $DC_DB_UP -eq 1 ] || [ $_bAll -eq 1 ]; then
+        menuhint $_bAll "${_spacer}A container is up"
         echo "${_spacer}$( _key s ) - shutdown containers   docker-compose stop"
         echo
         echo "${_spacer}$( _key m ) - more infos"
         echo "${_spacer}$( _key o ) - open app [${APP_NAME}] $DC_WEB_URL"
         echo "${_spacer}$( _key c ) - console (bash)"
+        echo
     fi
     if [ $DC_WEB_UP -eq 1 ] || [ $_bAll -eq 1 ]; then
+        menuhint $_bAll "Web container is up"
         echo "${_spacer}$( _key p ) - console check with php linter"
+        echo
     fi
     if [ $DC_DB_UP -eq 1 ] || [ $_bAll -eq 1 ]; then
+        echo
+        menuhint $_bAll "Database container is up"
         echo "${_spacer}$( _key d ) - Dump container database"
         echo "${_spacer}$( _key D ) - Import Dump into container database"
+        echo "${_spacer}$( _key M ) - Open Mysql client in database container"
+        echo
     fi
-    echo
+    menuhint $_bAll "Always available"
     echo "${_spacer}$( _key q ) - quit"
 
 }
@@ -706,6 +738,10 @@ while true; do
             h2 "DB tools :: import"
             _dbImport
             ;;
+        M)
+            h2 "DB tools :: mysql client"
+            docker exec -it "${APP_NAME}-db" mysql -uroot -p${MYSQL_ROOT_PASS} "${MYSQL_DB}"
+            ;;
         o) 
             h2 "Open app ..."
             xdg-open "$DC_WEB_URL"
diff --git a/docker/init.sh.cfg b/docker/init.sh.cfg
index 0f1cabfd92497c693f38a1cdec0d36bff164000c..bc6f16d4ebc43c4bb2977b76438f57382d9c106c 100644
--- a/docker/init.sh.cfg
+++ b/docker/init.sh.cfg
@@ -7,6 +7,7 @@
 #
 # ----------------------------------------------------------------------
 # 2021-12-17  <axel.hahn@iml.unibe.ch>
+# 2024-10-30  <axel.hahn@unibe.ch>       add DC_SHOW_MENUHINTS
 # ======================================================================
 
 APP_NAME=my_new_app
@@ -47,6 +48,11 @@ MYSQL_USER=${APP_NAME}
 MYSQL_PASS=mypassword
 MYSQL_DB=${APP_NAME}
 
+# ----------------------------------------------------------------------
+# Settings for init.sh
+
+# show hints for menu items in interactive mode
+DC_SHOW_MENUHINTS=0
 
 
 # ======================================================================
diff --git "a/docs/40_\342\232\231\357\270\217_Configuration/10_init.sh.cfg.md" "b/docs/40_\342\232\231\357\270\217_Configuration/10_init.sh.cfg.md"
index 933f0e2d8d69918120551f243650c3db39667ccd..a75f13254db4d8b812885869ca94c7f1e79d6ad3 100644
--- "a/docs/40_\342\232\231\357\270\217_Configuration/10_init.sh.cfg.md"
+++ "b/docs/40_\342\232\231\357\270\217_Configuration/10_init.sh.cfg.md"
@@ -129,6 +129,7 @@ APP_PORT                      | int    | port number for your local machine that
 CUTTER_NO_DATABASE            | const  | do not change it; the string is used to cut templates from there if no database is used
 DB_ADD                        | bool   | flag: do you add a Mariadb container? default: false
 DB_PORT                       | int    | port number for your local machine that will be mapped to port 3306 in the container; You can use it in a local db manager; remark: tha apache container needs 3306 and not the mapped port.
+DC_SHOW_MENUHINTS             | int    | Flag to show a notice why menu items are visible; default: 0 (off)
 DOCKER_USER_UID               | int    | unix uid of the httpd service user in apache container; it's not needed to change; default: 33
 MYSQL_ALLOW_EMPTY_PASSWORD    | int    | flag: 0
 MYSQL_DB                      | string | name of database; defaut is app name ${APP_NAME}
diff --git "a/docs/40_\342\232\231\357\270\217_Configuration/20_Templates.md" "b/docs/40_\342\232\231\357\270\217_Configuration/20_Templates.md"
index 798494339a773ff2d17e4cffdbc090cee5615f93..df515a05969a43c28d71905ee25bfcb6fb1aad76 100644
--- "a/docs/40_\342\232\231\357\270\217_Configuration/20_Templates.md"
+++ "b/docs/40_\342\232\231\357\270\217_Configuration/20_Templates.md"
@@ -31,7 +31,6 @@ Optional changes:
 # (2) run "docker-compose up" to startup
 # 
 # ======================================================================
-version: '3.9'
 
 networks:
   {{APP_NAME}}-network:
diff --git "a/docs/50_\342\214\250\357\270\217_Usage.md" "b/docs/50_\342\214\250\357\270\217_Usage.md"
index 8284eb1cca9e69f8e7da4528ff5f58e283c75f1b..4fefa106c249575eadef6de7a60214080bf0548e 100644
--- "a/docs/50_\342\214\250\357\270\217_Usage.md"
+++ "b/docs/50_\342\214\250\357\270\217_Usage.md"
@@ -13,7 +13,7 @@ The script supports command line parameters to use it in scripts. Use `-h` to ge
 
 ```txt
 
-INITIALIZER FOR DOCKER APP v1.20
+INITIALIZER FOR DOCKER APP v1.22
 
 A helper script written in Bash to bring up a PHP+Mysql application in docker.
 
@@ -49,12 +49,14 @@ MENU KEYS:
      r  - remove containers     docker-compose rm -f
      s  - shutdown containers   docker-compose stop
 
-     i  - Import more into infos
+     m  - more infos
      o  - open app [my_new_app] http://localhost:8001/
      c  - console (bash)
      p  - console check with php linter
+
      d  - Dump container database
      D  - Import Dump into container database
+     M  - Open Mysql client in database container
 
      q  - quit
 
@@ -152,4 +154,11 @@ This feature works if the database container is running.
 You get a file selection of the `./dbdumps/` directory.
 The selected sql or sql.gz file will be imported.
 
-**Hint**: With this feature you can import a dump from a live system into your dev environment too. Just copy its dump into `./dbdumps/`.
\ No newline at end of file
+**Hint**: With this feature you can import a dump from a live system into your dev environment too. Just copy its dump into `./dbdumps/`.
+
+#### M - Open Mysql client in database container
+
+With docker exec in the database container the mysql client `mysql` will be started with root credentials on the application database.
+This is faster than opening a shell on the container and start `mysql -u root -p<password> <dbname>` where you have to search the credentials first.
+
+Because of the usage of docker exec it works too when the database port is not exposed.