diff --git a/services/web/modules/server-ce-scripts/scripts/check-mongodb.mjs b/services/web/modules/server-ce-scripts/scripts/check-mongodb.mjs
index 29f5e7ffd26..46be91a1d9c 100644
--- a/services/web/modules/server-ce-scripts/scripts/check-mongodb.mjs
+++ b/services/web/modules/server-ce-scripts/scripts/check-mongodb.mjs
@@ -9,6 +9,34 @@ const { ObjectId } = mongodb
 const MIN_MONGO_VERSION = [6, 0]
 const MIN_MONGO_FEATURE_COMPATIBILITY_VERSION = [6, 0]
 
+// Allow ignoring admin check failures via an environment variable
+const OVERRIDE_ENV_VAR_NAME = 'ALLOW_MONGO_ADMIN_CHECK_FAILURES'
+
+function shouldSkipAdminChecks() {
+  return process.env[OVERRIDE_ENV_VAR_NAME] === 'true'
+}
+
+function handleUnauthorizedError(err, feature) {
+  if (
+    err instanceof mongodb.MongoServerError &&
+    err.codeName === 'Unauthorized'
+  ) {
+    console.warn(`Warning: failed to check ${feature} (not authorised)`)
+    if (!shouldSkipAdminChecks()) {
+      console.error(
+        `Please ensure the MongoDB user has the required admin permissions, or\n` +
+          `set the environment variable ${OVERRIDE_ENV_VAR_NAME}=true to ignore this check.`
+      )
+      process.exit(1)
+    }
+    console.warn(
+      `Ignoring ${feature} check failure (${OVERRIDE_ENV_VAR_NAME}=${process.env[OVERRIDE_ENV_VAR_NAME]})`
+    )
+  } else {
+    throw err
+  }
+}
+
 async function main() {
   let mongoClient
   try {
@@ -18,8 +46,16 @@ async function main() {
     throw err
   }
 
-  await checkMongoVersion(mongoClient)
-  await checkFeatureCompatibilityVersion(mongoClient)
+  try {
+    await checkMongoVersion(mongoClient)
+  } catch (err) {
+    handleUnauthorizedError(err, 'MongoDB version')
+  }
+  try {
+    await checkFeatureCompatibilityVersion(mongoClient)
+  } catch (err) {
+    handleUnauthorizedError(err, 'MongoDB feature compatibility version')
+  }
 
   try {
     await testTransactions(mongoClient)
