diff --git a/init/09-init_users.sh b/init/09-init_users.sh
new file mode 100755
index 0000000000000000000000000000000000000000..48dac3e06cc2328022fe821d11a1d684a030e643
--- /dev/null
+++ b/init/09-init_users.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+set -e
+
+users=`cat /docker-entrypoint-initdb.d/users`
+
+for user in $users ;
+do
+    echo Creating user $user
+    user_pw=`echo -n $user | md5sum | cut -c -5`
+
+    psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
+    CREATE USER $user;
+    CREATE DATABASE $user;
+    REVOKE connect ON DATABASE $user FROM PUBLIC;
+    GRANT ALL PRIVILEGES ON DATABASE $user TO $user;
+    ALTER USER $user WITH PASSWORD '$user_pw';
+    GRANT pg_read_server_files TO $user;
+EOSQL
+
+    #echo Creating user sample database
+    #echo $user_pw | psql -W --username $user --dbname $user -f /docker-entrypoint-initdb.d/sample/golf.sql
+    #echo $user_pw | psql -W --username $user --dbname $user -f /docker-entrypoint-initdb.d/sample/dvdrental.sql
+
+done
diff --git a/src/Dockerfile-postgresql b/src/Dockerfile-postgresql
index ee0d57487478b9dc2c47cafdd5788602e5300fb5..8111cd0cf17086a9ac6a674c00a6b683b179ea13 100644
--- a/src/Dockerfile-postgresql
+++ b/src/Dockerfile-postgresql
@@ -1,4 +1,4 @@
-from postgres:14.0-alpine
+from postgres:16-alpine
 RUN mkdir /home/postgres
 COPY postgres-crontab /home/postgres/.
 COPY kill-long-running-queries.sh /home/postgres/.