diff --git a/src/metabase/models/recent_views.clj b/src/metabase/models/recent_views.clj
index f127040b27f86ba8fa7d67fa0888a805c145e9f1..d64c829c299007f2b53626fbf764253e43c10780 100644
--- a/src/metabase/models/recent_views.clj
+++ b/src/metabase/models/recent_views.clj
@@ -419,7 +419,7 @@
     (when (and (not= "hidden" (:visibility_type table))
                (:database-name table)
                (:active table)
-               (mi/can-read? table))
+               (mi/can-read? :model/Table model_id))
       {:id model_id
        :name (:name table)
        :description (:description table)
diff --git a/test/metabase/models/recent_views_test.clj b/test/metabase/models/recent_views_test.clj
index bb270a4ea9ddae1c4c4b925da174102670240609..6ea0d2f729ad0e2784fed377ebd7c37ae170c123 100644
--- a/test/metabase/models/recent_views_test.clj
+++ b/test/metabase/models/recent_views_test.clj
@@ -180,7 +180,16 @@
         (is (= expected
                (mapv fixup
                      (mt/with-test-user :rasta
-                       (recent-views (mt/user->id :rasta))))))))))
+                       (recent-views (mt/user->id :rasta)))))))))
+  (testing "non admins can see tables in recents (#47420)"
+    (mt/dataset test-data
+      (let [products-id (mt/id :products)]
+        (assert (-> (mt/fetch-user :rasta) :is_superuser not) "User is a super user")
+        (recent-views/update-users-recent-views! (mt/user->id :rasta) :model/Table products-id :view)
+        (let [views (mt/with-test-user :rasta
+                      (recent-views (mt/user->id :rasta)))]
+          (is (contains? (into #{} (map (juxt :id :display_name :model)) views)
+                         [products-id "Products" :table])))))))
 
 (deftest update-users-recent-views!-duplicates-test
   (testing "`update-users-recent-views!` prunes duplicates of a certain model.`"