diff --git src/wp-admin/includes/schema.php src/wp-admin/includes/schema.php
index b93fad35b4..3f7cf91bd8 100644
--- src/wp-admin/includes/schema.php
+++ src/wp-admin/includes/schema.php
@@ -608,6 +608,7 @@ function populate_roles() {
 	populate_roles_270();
 	populate_roles_280();
 	populate_roles_300();
+	populate_roles_500();
 }
 
 /**
@@ -848,6 +849,65 @@ function populate_roles_300() {
 	}
 }
 
+/**
+ * Create and modify WordPress roles for WordPress 5.0.
+ *
+ * Assigns capabilities for reading and editing reusable blocks.
+ *
+ * @since 5.0.0
+ */
+function populate_roles_500() {
+	$editor_caps = array(
+		'edit_blocks',
+		'edit_others_blocks',
+		'publish_blocks',
+		'read_private_blocks',
+		'read_blocks',
+		'delete_blocks',
+		'delete_private_blocks',
+		'delete_published_blocks',
+		'delete_others_blocks',
+		'edit_private_blocks',
+		'edit_published_blocks',
+		'create_blocks',
+	);
+
+	$caps_map = array(
+		'administrator' => $editor_caps,
+		'editor'        => $editor_caps,
+		'author'        => array(
+			'edit_blocks',
+			'publish_blocks',
+			'read_blocks',
+			'delete_blocks',
+			'delete_published_blocks',
+			'edit_published_blocks',
+			'create_blocks',
+		),
+		'contributor'   => array(
+			'read_blocks',
+		),
+	);
+
+	foreach ( $caps_map as $role_name => $caps ) {
+		$role = get_role( $role_name );
+
+		if ( empty( $role ) ) {
+			continue;
+		}
+
+		/*
+		 * Due to roles being created in the block editor feature plugin,
+		 * `$role->has_cap( $cap )` needs to run before adding the role.
+		 */
+		foreach ( $caps as $cap ) {
+			if ( ! $role->has_cap( $cap ) ) {
+				$role->add_cap( $cap );
+			}
+		}
+	}
+}
+
 if ( !function_exists( 'install_network' ) ) :
 /**
  * Install Network.
diff --git src/wp-admin/includes/upgrade.php src/wp-admin/includes/upgrade.php
index f36d2d0c02..13c075b4c6 100644
--- src/wp-admin/includes/upgrade.php
+++ src/wp-admin/includes/upgrade.php
@@ -628,7 +628,7 @@ function upgrade_all() {
 	if ( $wp_current_db_version < 37965 )
 		upgrade_460();
 
-	if ( $wp_current_db_version < 43764 )
+	if ( $wp_current_db_version < 43824 )
 		upgrade_500();
 
 	maybe_disable_link_manager();
@@ -1815,6 +1815,10 @@ function upgrade_500() {
 		}
 		deactivate_plugins( array( 'gutenberg/gutenberg.php' ), true );
 	}
+
+	if ( $wp_current_db_version < 43824 ) {
+		populate_roles_500();
+	}
 }
 
 /**
diff --git src/wp-includes/capabilities.php src/wp-includes/capabilities.php
index 38bb4c6c6d..748d02907c 100644
--- src/wp-includes/capabilities.php
+++ src/wp-includes/capabilities.php
@@ -555,23 +555,6 @@ function map_meta_cap( $cap, $user_id ) {
 			return call_user_func_array( 'map_meta_cap', $args );
 		}
 
-		// Block capabilities map to their post equivalent.
-		$block_caps = array(
-			'edit_blocks',
-			'edit_others_blocks',
-			'publish_blocks',
-			'read_private_blocks',
-			'delete_blocks',
-			'delete_private_blocks',
-			'delete_published_blocks',
-			'delete_others_blocks',
-			'edit_private_blocks',
-			'edit_published_blocks',
-		);
-		if ( in_array( $cap, $block_caps, true ) ) {
-			$cap = str_replace( '_blocks', '_posts', $cap );
-		}
-
 		// If no meta caps match, return the original cap.
 		$caps[] = $cap;
 	}
diff --git src/wp-includes/post.php src/wp-includes/post.php
index 89b76184c3..86c58a4d83 100644
--- src/wp-includes/post.php
+++ src/wp-includes/post.php
@@ -243,14 +243,8 @@ function create_initial_post_types() {
 			'rest_controller_class' => 'WP_REST_Blocks_Controller',
 			'capability_type'       => 'block',
 			'capabilities'          => array(
-				// You need to be able to edit posts, in order to read blocks in their raw form.
-				'read'                   => 'edit_posts',
-				// You need to be able to publish posts, in order to create blocks.
-				'create_posts'           => 'publish_posts',
-				'edit_published_posts'   => 'edit_published_posts',
-				'delete_published_posts' => 'delete_published_posts',
-				'edit_others_posts'      => 'edit_others_posts',
-				'delete_others_posts'    => 'delete_others_posts',
+				'read'         => 'read_blocks',
+				'create_posts' => 'create_blocks',
 			),
 			'map_meta_cap'          => true,
 			'supports'              => array(
@@ -260,7 +254,6 @@ function create_initial_post_types() {
 		)
 	);
 
-
 	register_post_status( 'publish', array(
 		'label'       => _x( 'Published', 'post status' ),
 		'public'      => true,
diff --git src/wp-includes/version.php src/wp-includes/version.php
index 2bab60503f..f60251e436 100644
--- src/wp-includes/version.php
+++ src/wp-includes/version.php
@@ -11,7 +11,7 @@ $wp_version = '5.0-beta1-43823-src';
  *
  * @global int $wp_db_version
  */
-$wp_db_version = 43764;
+$wp_db_version = 43824;
 
 /**
  * Holds the TinyMCE version
