diff --git a/src/wp-admin/includes/schema.php b/src/wp-admin/includes/schema.php
index 544a9221d1..8547e0cdcd 100644
--- a/src/wp-admin/includes/schema.php
+++ b/src/wp-admin/includes/schema.php
@@ -698,6 +698,7 @@ function populate_roles() {
 	populate_roles_270();
 	populate_roles_280();
 	populate_roles_300();
+	populate_roles_510();
 }
 
 /**
@@ -939,6 +940,60 @@ function populate_roles_300() {
 	}
 }
 
+/**
+ * Create and modify WordPress roles for WordPress 5.1.
+ *
+ * @since 5.1.0
+ */
+function populate_roles_510() {
+	$high_privileged_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',
+	);
+
+	$caps_map = array(
+		'administrator' => $high_privileged_caps,
+		'editor'        => $high_privileged_caps,
+		'author'        => array(
+			'edit_blocks',
+			'publish_blocks',
+			'delete_blocks',
+			'delete_published_blocks',
+			'edit_published_blocks',
+		),
+		'contributor'   => array(
+			'edit_blocks',
+			'delete_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 a/src/wp-admin/includes/upgrade.php b/src/wp-admin/includes/upgrade.php
index 32d853cb05..321fb650da 100644
--- a/src/wp-admin/includes/upgrade.php
+++ b/src/wp-admin/includes/upgrade.php
@@ -815,6 +815,10 @@ function upgrade_all() {
 		upgrade_500();
 	}
 
+	if ( $wp_current_db_version < 44658 ) {
+		upgrade_510();
+	}
+
 	maybe_disable_link_manager();
 
 	maybe_disable_automattic_widgets();
@@ -2118,6 +2122,21 @@ function upgrade_500() {
 	}
 }
 
+/**
+ * Executes changes made in WordPress 5.1.0.
+ *
+ * @ignore
+ * @since 5.1.0
+ *
+ * @global int $wp_current_db_version Current database version.
+ */
+function upgrade_510() {
+	global $wp_current_db_version;
+	if ( $wp_current_db_version < 44658 ) {
+		populate_roles_510();
+	}
+}
+
 /**
  * Executes network-level upgrade routines.
  *
diff --git a/src/wp-includes/capabilities.php b/src/wp-includes/capabilities.php
index afb6f59507..c235257170 100644
--- a/src/wp-includes/capabilities.php
+++ b/src/wp-includes/capabilities.php
@@ -582,23 +582,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 a/src/wp-includes/post.php b/src/wp-includes/post.php
index 00a05babc5..e797acd36c 100644
--- a/src/wp-includes/post.php
+++ b/src/wp-includes/post.php
@@ -288,14 +288,10 @@ 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 edit blocks, in order to read blocks in their raw form.
+				'read'         => 'edit_blocks',
 				// 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',
+				'create_posts' => 'publish_blocks',
 			),
 			'map_meta_cap'          => true,
 			'supports'              => array(
diff --git a/src/wp-includes/version.php b/src/wp-includes/version.php
index f86babb3f8..df3124c43e 100644
--- a/src/wp-includes/version.php
+++ b/src/wp-includes/version.php
@@ -20,7 +20,7 @@
  *
  * @global int $wp_db_version
  */
-$wp_db_version = 44467;
+$wp_db_version = 44658;
 
 /**
  * Holds the TinyMCE version
diff --git a/tests/phpunit/tests/user/capabilities.php b/tests/phpunit/tests/user/capabilities.php
index 69742c3972..4ec6c58b87 100644
--- a/tests/phpunit/tests/user/capabilities.php
+++ b/tests/phpunit/tests/user/capabilities.php
@@ -76,77 +76,88 @@ function _meta_filter( $meta_value, $meta_key, $meta_type ) {
 	final private function _getSingleSitePrimitiveCaps() {
 		return array(
 
-			'unfiltered_html'        => array( 'administrator', 'editor' ),
-
-			'activate_plugins'       => array( 'administrator' ),
-			'create_users'           => array( 'administrator' ),
-			'delete_plugins'         => array( 'administrator' ),
-			'delete_themes'          => array( 'administrator' ),
-			'delete_users'           => array( 'administrator' ),
-			'edit_files'             => array( 'administrator' ),
-			'edit_plugins'           => array( 'administrator' ),
-			'edit_themes'            => array( 'administrator' ),
-			'edit_users'             => array( 'administrator' ),
-			'install_plugins'        => array( 'administrator' ),
-			'install_themes'         => array( 'administrator' ),
-			'update_core'            => array( 'administrator' ),
-			'update_plugins'         => array( 'administrator' ),
-			'update_themes'          => array( 'administrator' ),
-			'edit_theme_options'     => array( 'administrator' ),
-			'export'                 => array( 'administrator' ),
-			'import'                 => array( 'administrator' ),
-			'list_users'             => array( 'administrator' ),
-			'manage_options'         => array( 'administrator' ),
-			'promote_users'          => array( 'administrator' ),
-			'remove_users'           => array( 'administrator' ),
-			'switch_themes'          => array( 'administrator' ),
-			'edit_dashboard'         => array( 'administrator' ),
-
-			'moderate_comments'      => array( 'administrator', 'editor' ),
-			'manage_categories'      => array( 'administrator', 'editor' ),
-			'edit_others_posts'      => array( 'administrator', 'editor' ),
-			'edit_pages'             => array( 'administrator', 'editor' ),
-			'edit_others_pages'      => array( 'administrator', 'editor' ),
-			'edit_published_pages'   => array( 'administrator', 'editor' ),
-			'publish_pages'          => array( 'administrator', 'editor' ),
-			'delete_pages'           => array( 'administrator', 'editor' ),
-			'delete_others_pages'    => array( 'administrator', 'editor' ),
-			'delete_published_pages' => array( 'administrator', 'editor' ),
-			'delete_others_posts'    => array( 'administrator', 'editor' ),
-			'delete_private_posts'   => array( 'administrator', 'editor' ),
-			'edit_private_posts'     => array( 'administrator', 'editor' ),
-			'read_private_posts'     => array( 'administrator', 'editor' ),
-			'delete_private_pages'   => array( 'administrator', 'editor' ),
-			'edit_private_pages'     => array( 'administrator', 'editor' ),
-			'read_private_pages'     => array( 'administrator', 'editor' ),
-
-			'edit_published_posts'   => array( 'administrator', 'editor', 'author' ),
-			'upload_files'           => array( 'administrator', 'editor', 'author' ),
-			'publish_posts'          => array( 'administrator', 'editor', 'author' ),
-			'delete_published_posts' => array( 'administrator', 'editor', 'author' ),
-
-			'edit_posts'             => array( 'administrator', 'editor', 'author', 'contributor' ),
-			'delete_posts'           => array( 'administrator', 'editor', 'author', 'contributor' ),
-
-			'read'                   => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
-
-			'level_10'               => array( 'administrator' ),
-			'level_9'                => array( 'administrator' ),
-			'level_8'                => array( 'administrator' ),
-			'level_7'                => array( 'administrator', 'editor' ),
-			'level_6'                => array( 'administrator', 'editor' ),
-			'level_5'                => array( 'administrator', 'editor' ),
-			'level_4'                => array( 'administrator', 'editor' ),
-			'level_3'                => array( 'administrator', 'editor' ),
-			'level_2'                => array( 'administrator', 'editor', 'author' ),
-			'level_1'                => array( 'administrator', 'editor', 'author', 'contributor' ),
-			'level_0'                => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
-
-			'administrator'          => array( 'administrator' ),
-			'editor'                 => array( 'editor' ),
-			'author'                 => array( 'author' ),
-			'contributor'            => array( 'contributor' ),
-			'subscriber'             => array( 'subscriber' ),
+			'unfiltered_html'         => array( 'administrator', 'editor' ),
+
+			'activate_plugins'        => array( 'administrator' ),
+			'create_users'            => array( 'administrator' ),
+			'delete_plugins'          => array( 'administrator' ),
+			'delete_themes'           => array( 'administrator' ),
+			'delete_users'            => array( 'administrator' ),
+			'edit_files'              => array( 'administrator' ),
+			'edit_plugins'            => array( 'administrator' ),
+			'edit_themes'             => array( 'administrator' ),
+			'edit_users'              => array( 'administrator' ),
+			'install_plugins'         => array( 'administrator' ),
+			'install_themes'          => array( 'administrator' ),
+			'update_core'             => array( 'administrator' ),
+			'update_plugins'          => array( 'administrator' ),
+			'update_themes'           => array( 'administrator' ),
+			'edit_theme_options'      => array( 'administrator' ),
+			'export'                  => array( 'administrator' ),
+			'import'                  => array( 'administrator' ),
+			'list_users'              => array( 'administrator' ),
+			'manage_options'          => array( 'administrator' ),
+			'promote_users'           => array( 'administrator' ),
+			'remove_users'            => array( 'administrator' ),
+			'switch_themes'           => array( 'administrator' ),
+			'edit_dashboard'          => array( 'administrator' ),
+
+			'moderate_comments'       => array( 'administrator', 'editor' ),
+			'manage_categories'       => array( 'administrator', 'editor' ),
+			'edit_others_posts'       => array( 'administrator', 'editor' ),
+			'edit_pages'              => array( 'administrator', 'editor' ),
+			'edit_others_pages'       => array( 'administrator', 'editor' ),
+			'edit_published_pages'    => array( 'administrator', 'editor' ),
+			'publish_pages'           => array( 'administrator', 'editor' ),
+			'delete_pages'            => array( 'administrator', 'editor' ),
+			'delete_others_pages'     => array( 'administrator', 'editor' ),
+			'delete_published_pages'  => array( 'administrator', 'editor' ),
+			'delete_others_posts'     => array( 'administrator', 'editor' ),
+			'delete_private_posts'    => array( 'administrator', 'editor' ),
+			'edit_private_posts'      => array( 'administrator', 'editor' ),
+			'read_private_posts'      => array( 'administrator', 'editor' ),
+			'delete_private_pages'    => array( 'administrator', 'editor' ),
+			'edit_private_pages'      => array( 'administrator', 'editor' ),
+			'read_private_pages'      => array( 'administrator', 'editor' ),
+
+			'edit_published_posts'    => array( 'administrator', 'editor', 'author' ),
+			'upload_files'            => array( 'administrator', 'editor', 'author' ),
+			'publish_posts'           => array( 'administrator', 'editor', 'author' ),
+			'delete_published_posts'  => array( 'administrator', 'editor', 'author' ),
+
+			'edit_posts'              => array( 'administrator', 'editor', 'author', 'contributor' ),
+			'delete_posts'            => array( 'administrator', 'editor', 'author', 'contributor' ),
+
+			'read'                    => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
+
+			'edit_blocks'             => array( 'administrator', 'editor', 'author', 'contributor' ),
+			'edit_others_blocks'      => array( 'administrator', 'editor' ),
+			'publish_blocks'          => array( 'administrator', 'editor', 'author' ),
+			'read_private_blocks'     => array( 'administrator', 'editor' ),
+			'delete_blocks'           => array( 'administrator', 'editor', 'author', 'contributor' ),
+			'delete_private_blocks'   => array( 'administrator', 'editor' ),
+			'delete_published_blocks' => array( 'administrator', 'editor', 'author' ),
+			'delete_others_blocks'    => array( 'administrator', 'editor' ),
+			'edit_private_blocks'     => array( 'administrator', 'editor' ),
+			'edit_published_blocks'   => array( 'administrator', 'editor', 'author' ),
+
+			'level_10'                => array( 'administrator' ),
+			'level_9'                 => array( 'administrator' ),
+			'level_8'                 => array( 'administrator' ),
+			'level_7'                 => array( 'administrator', 'editor' ),
+			'level_6'                 => array( 'administrator', 'editor' ),
+			'level_5'                 => array( 'administrator', 'editor' ),
+			'level_4'                 => array( 'administrator', 'editor' ),
+			'level_3'                 => array( 'administrator', 'editor' ),
+			'level_2'                 => array( 'administrator', 'editor', 'author' ),
+			'level_1'                 => array( 'administrator', 'editor', 'author', 'contributor' ),
+			'level_0'                 => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
+
+			'administrator'           => array( 'administrator' ),
+			'editor'                  => array( 'editor' ),
+			'author'                  => array( 'author' ),
+			'contributor'             => array( 'contributor' ),
+			'subscriber'              => array( 'subscriber' ),
 
 		);
 
@@ -155,78 +166,89 @@ function _meta_filter( $meta_value, $meta_key, $meta_type ) {
 	final private function _getMultiSitePrimitiveCaps() {
 		return array(
 
-			'unfiltered_html'        => array(),
-
-			'activate_plugins'       => array(),
-			'create_users'           => array(),
-			'delete_plugins'         => array(),
-			'delete_themes'          => array(),
-			'delete_users'           => array(),
-			'edit_files'             => array(),
-			'edit_plugins'           => array(),
-			'edit_themes'            => array(),
-			'edit_users'             => array(),
-			'install_plugins'        => array(),
-			'install_themes'         => array(),
-			'update_core'            => array(),
-			'update_plugins'         => array(),
-			'update_themes'          => array(),
-
-			'edit_theme_options'     => array( 'administrator' ),
-			'export'                 => array( 'administrator' ),
-			'import'                 => array( 'administrator' ),
-			'list_users'             => array( 'administrator' ),
-			'manage_options'         => array( 'administrator' ),
-			'promote_users'          => array( 'administrator' ),
-			'remove_users'           => array( 'administrator' ),
-			'switch_themes'          => array( 'administrator' ),
-			'edit_dashboard'         => array( 'administrator' ),
-
-			'moderate_comments'      => array( 'administrator', 'editor' ),
-			'manage_categories'      => array( 'administrator', 'editor' ),
-			'edit_others_posts'      => array( 'administrator', 'editor' ),
-			'edit_pages'             => array( 'administrator', 'editor' ),
-			'edit_others_pages'      => array( 'administrator', 'editor' ),
-			'edit_published_pages'   => array( 'administrator', 'editor' ),
-			'publish_pages'          => array( 'administrator', 'editor' ),
-			'delete_pages'           => array( 'administrator', 'editor' ),
-			'delete_others_pages'    => array( 'administrator', 'editor' ),
-			'delete_published_pages' => array( 'administrator', 'editor' ),
-			'delete_others_posts'    => array( 'administrator', 'editor' ),
-			'delete_private_posts'   => array( 'administrator', 'editor' ),
-			'edit_private_posts'     => array( 'administrator', 'editor' ),
-			'read_private_posts'     => array( 'administrator', 'editor' ),
-			'delete_private_pages'   => array( 'administrator', 'editor' ),
-			'edit_private_pages'     => array( 'administrator', 'editor' ),
-			'read_private_pages'     => array( 'administrator', 'editor' ),
-
-			'edit_published_posts'   => array( 'administrator', 'editor', 'author' ),
-			'upload_files'           => array( 'administrator', 'editor', 'author' ),
-			'publish_posts'          => array( 'administrator', 'editor', 'author' ),
-			'delete_published_posts' => array( 'administrator', 'editor', 'author' ),
-
-			'edit_posts'             => array( 'administrator', 'editor', 'author', 'contributor' ),
-			'delete_posts'           => array( 'administrator', 'editor', 'author', 'contributor' ),
-
-			'read'                   => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
-
-			'level_10'               => array( 'administrator' ),
-			'level_9'                => array( 'administrator' ),
-			'level_8'                => array( 'administrator' ),
-			'level_7'                => array( 'administrator', 'editor' ),
-			'level_6'                => array( 'administrator', 'editor' ),
-			'level_5'                => array( 'administrator', 'editor' ),
-			'level_4'                => array( 'administrator', 'editor' ),
-			'level_3'                => array( 'administrator', 'editor' ),
-			'level_2'                => array( 'administrator', 'editor', 'author' ),
-			'level_1'                => array( 'administrator', 'editor', 'author', 'contributor' ),
-			'level_0'                => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
-
-			'administrator'          => array( 'administrator' ),
-			'editor'                 => array( 'editor' ),
-			'author'                 => array( 'author' ),
-			'contributor'            => array( 'contributor' ),
-			'subscriber'             => array( 'subscriber' ),
+			'unfiltered_html'         => array(),
+
+			'activate_plugins'        => array(),
+			'create_users'            => array(),
+			'delete_plugins'          => array(),
+			'delete_themes'           => array(),
+			'delete_users'            => array(),
+			'edit_files'              => array(),
+			'edit_plugins'            => array(),
+			'edit_themes'             => array(),
+			'edit_users'              => array(),
+			'install_plugins'         => array(),
+			'install_themes'          => array(),
+			'update_core'             => array(),
+			'update_plugins'          => array(),
+			'update_themes'           => array(),
+
+			'edit_theme_options'      => array( 'administrator' ),
+			'export'                  => array( 'administrator' ),
+			'import'                  => array( 'administrator' ),
+			'list_users'              => array( 'administrator' ),
+			'manage_options'          => array( 'administrator' ),
+			'promote_users'           => array( 'administrator' ),
+			'remove_users'            => array( 'administrator' ),
+			'switch_themes'           => array( 'administrator' ),
+			'edit_dashboard'          => array( 'administrator' ),
+
+			'moderate_comments'       => array( 'administrator', 'editor' ),
+			'manage_categories'       => array( 'administrator', 'editor' ),
+			'edit_others_posts'       => array( 'administrator', 'editor' ),
+			'edit_pages'              => array( 'administrator', 'editor' ),
+			'edit_others_pages'       => array( 'administrator', 'editor' ),
+			'edit_published_pages'    => array( 'administrator', 'editor' ),
+			'publish_pages'           => array( 'administrator', 'editor' ),
+			'delete_pages'            => array( 'administrator', 'editor' ),
+			'delete_others_pages'     => array( 'administrator', 'editor' ),
+			'delete_published_pages'  => array( 'administrator', 'editor' ),
+			'delete_others_posts'     => array( 'administrator', 'editor' ),
+			'delete_private_posts'    => array( 'administrator', 'editor' ),
+			'edit_private_posts'      => array( 'administrator', 'editor' ),
+			'read_private_posts'      => array( 'administrator', 'editor' ),
+			'delete_private_pages'    => array( 'administrator', 'editor' ),
+			'edit_private_pages'      => array( 'administrator', 'editor' ),
+			'read_private_pages'      => array( 'administrator', 'editor' ),
+
+			'edit_published_posts'    => array( 'administrator', 'editor', 'author' ),
+			'upload_files'            => array( 'administrator', 'editor', 'author' ),
+			'publish_posts'           => array( 'administrator', 'editor', 'author' ),
+			'delete_published_posts'  => array( 'administrator', 'editor', 'author' ),
+
+			'edit_posts'              => array( 'administrator', 'editor', 'author', 'contributor' ),
+			'delete_posts'            => array( 'administrator', 'editor', 'author', 'contributor' ),
+
+			'read'                    => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
+
+			'edit_blocks'             => array( 'administrator', 'editor', 'author', 'contributor' ),
+			'edit_others_blocks'      => array( 'administrator', 'editor' ),
+			'publish_blocks'          => array( 'administrator', 'editor', 'author' ),
+			'read_private_blocks'     => array( 'administrator', 'editor' ),
+			'delete_blocks'           => array( 'administrator', 'editor', 'author', 'contributor' ),
+			'delete_private_blocks'   => array( 'administrator', 'editor' ),
+			'delete_published_blocks' => array( 'administrator', 'editor', 'author' ),
+			'delete_others_blocks'    => array( 'administrator', 'editor' ),
+			'edit_private_blocks'     => array( 'administrator', 'editor' ),
+			'edit_published_blocks'   => array( 'administrator', 'editor', 'author' ),
+
+			'level_10'                => array( 'administrator' ),
+			'level_9'                 => array( 'administrator' ),
+			'level_8'                 => array( 'administrator' ),
+			'level_7'                 => array( 'administrator', 'editor' ),
+			'level_6'                 => array( 'administrator', 'editor' ),
+			'level_5'                 => array( 'administrator', 'editor' ),
+			'level_4'                 => array( 'administrator', 'editor' ),
+			'level_3'                 => array( 'administrator', 'editor' ),
+			'level_2'                 => array( 'administrator', 'editor', 'author' ),
+			'level_1'                 => array( 'administrator', 'editor', 'author', 'contributor' ),
+			'level_0'                 => array( 'administrator', 'editor', 'author', 'contributor', 'subscriber' ),
+
+			'administrator'           => array( 'administrator' ),
+			'editor'                  => array( 'editor' ),
+			'author'                  => array( 'author' ),
+			'contributor'             => array( 'contributor' ),
+			'subscriber'              => array( 'subscriber' ),
 
 		);
 
@@ -2129,15 +2151,15 @@ function test_block_caps( $role, $cap, $use_post, $expected ) {
 
 	function data_block_caps() {
 		$post_caps = array(
-			'edit_block',
-			'read_block',
-			'delete_block',
+			'edit_post',
+			'read_post',
+			'delete_post',
 		);
 
 		$all_caps = array(
-			'edit_block',
-			'read_block',
-			'delete_block',
+			'edit_post',
+			'read_post',
+			'delete_post',
 			'edit_blocks',
 			'edit_others_blocks',
 			'publish_blocks',
@@ -2154,7 +2176,7 @@ function data_block_caps() {
 			'administrator' => $all_caps,
 			'editor'        => $all_caps,
 			'author'        => array(
-				'read_block',
+				'read_post',
 				'edit_blocks',
 				'publish_blocks',
 				'delete_blocks',
@@ -2162,7 +2184,7 @@ function data_block_caps() {
 				'edit_published_blocks',
 			),
 			'contributor'   => array(
-				'read_block',
+				'read_post',
 				'edit_blocks',
 				'delete_blocks',
 			),
