diff --git a/frontend/src/metabase-lib/lib/metadata/Metadata.js b/frontend/src/metabase-lib/lib/metadata/Metadata.js
index 28a9e330df0bd05c8b96545c3ccdb25c2a1c0f6e..644207c340b84d1169d8007f4b7c8bb79e7d2ccc 100644
--- a/frontend/src/metabase-lib/lib/metadata/Metadata.js
+++ b/frontend/src/metabase-lib/lib/metadata/Metadata.js
@@ -1,5 +1,7 @@
 /* @flow weak */
 
+import _ from "underscore";
+
 import Base from "./Base";
 
 import Database from "./Database";
@@ -25,9 +27,12 @@ export default class Metadata extends Base {
   segments: { [id: SegmentId]: Segment };
 
   // DEPRECATED: this won't be sorted or filtered in a meaningful way
-  databasesList(): Database[] {
-    // $FlowFixMe
-    return (Object.values(this.databases): Database[]);
+  databasesList({ savedQuestions = true } = {}): Database[] {
+    return _.chain(this.databases)
+      .values()
+      .filter(db => savedQuestions || !db.is_saved_questions)
+      .sortBy(db => db.name)
+      .value();
   }
 
   // DEPRECATED: this won't be sorted or filtered in a meaningful way
diff --git a/frontend/src/metabase/admin/permissions/selectors.js b/frontend/src/metabase/admin/permissions/selectors.js
index ebcdb90a59e3813c915325d5ed6bb28143a5ece6..038fd89febc815d0f1c22dbf3028d436fa34d1d6 100644
--- a/frontend/src/metabase/admin/permissions/selectors.js
+++ b/frontend/src/metabase/admin/permissions/selectors.js
@@ -305,7 +305,7 @@ export const getTablesPermissionsGrid = createSelector(
     databaseId: DatabaseId,
     schemaName: SchemaName,
   ) => {
-    const database = metadata.databases[databaseId];
+    const database = metadata.database(databaseId);
 
     if (!groups || !permissions || !database) {
       return null;
@@ -411,7 +411,7 @@ export const getSchemasPermissionsGrid = createSelector(
     permissions: GroupsPermissions,
     databaseId: DatabaseId,
   ) => {
-    const database = metadata.databases[databaseId];
+    const database = metadata.database(databaseId);
 
     if (!groups || !permissions || !database) {
       return null;
@@ -515,7 +515,7 @@ export const getDatabasesPermissionsGrid = createSelector(
       return null;
     }
 
-    const databases = Object.values(metadata.databases);
+    const databases = metadata.databasesList({ savedQuestions: false });
     const defaultGroup = _.find(groups, isDefaultGroup);
 
     return {
@@ -543,7 +543,7 @@ export const getDatabasesPermissionsGrid = createSelector(
           },
           postAction(groupId, { databaseId }, value) {
             if (value === "controlled") {
-              const database = metadata.databases[databaseId];
+              const database = metadata.database(databaseId);
               const schemas = database ? database.schemaNames() : [];
               if (
                 schemas.length === 0 ||
diff --git a/frontend/test/metabase-lib/lib/metadata/Metadata.unit.spec.js b/frontend/test/metabase-lib/lib/metadata/Metadata.unit.spec.js
new file mode 100644
index 0000000000000000000000000000000000000000..6ece4e7f3983fede36238f30a1024383f8c52868
--- /dev/null
+++ b/frontend/test/metabase-lib/lib/metadata/Metadata.unit.spec.js
@@ -0,0 +1,24 @@
+import { state } from "__support__/sample_dataset_fixture";
+
+import { getMetadata } from "metabase/selectors/metadata";
+
+describe("databasesList", () => {
+  it("should filter out saved questions", () => {
+    const metadata = getMetadata(state);
+    const savedQuestionDb = {
+      id: "saved-question-id",
+      name: "Saved Questions",
+      is_saved_questions: true,
+    };
+    metadata.databases[savedQuestionDb.id] = savedQuestionDb;
+
+    expect(
+      metadata.databasesList().find(d => d.name === "Saved Questions"),
+    ).toEqual(savedQuestionDb);
+    expect(
+      metadata
+        .databasesList({ savedQuestions: false })
+        .find(d => d.name === "Saved Questions"),
+    ).toBeUndefined();
+  });
+});