diff --git a/servers/slapd/back-mdb/init.c b/servers/slapd/back-mdb/init.c
index 34ad9cbc094758eead79b289a1c1ef1689c50c6a..d59b207bc652fe64812189b6b80a2d0335f977a7 100644
--- a/servers/slapd/back-mdb/init.c
+++ b/servers/slapd/back-mdb/init.c
@@ -265,10 +265,15 @@ mdb_db_open( BackendDB *be, ConfigReply *cr )
 		goto fail;
 	}
 
-	rc = mdb_attr_dbs_open( be, txn, cr );
-	if ( rc ) {
-		mdb_txn_abort( txn );
-		goto fail;
+	/* slapcat doesn't need indexes. avoid a failure if
+	 * a configured index wasn't created yet.
+	 */
+	if ( !(slapMode & SLAP_TOOL_READONLY) ) {
+		rc = mdb_attr_dbs_open( be, txn, cr );
+		if ( rc ) {
+			mdb_txn_abort( txn );
+			goto fail;
+		}
 	}
 
 	rc = mdb_txn_commit(txn);