diff --git a/trove_dashboard/api/trove.py b/trove_dashboard/api/trove.py
index 80625ef..f9245f6 100644
--- a/trove_dashboard/api/trove.py
+++ b/trove_dashboard/api/trove.py
@@ -231,6 +231,10 @@ def root_show(request, instance_id):
     return troveclient(request).root.is_root_enabled(instance_id)
 
 
+def root_disable(request, instance_id):
+    return troveclient(request).root.delete(instance_id)
+
+
 def users_list(request, instance_id):
     return troveclient(request).users.list(instance_id)
 
diff --git a/trove_dashboard/content/databases/tables.py b/trove_dashboard/content/databases/tables.py
index 028e43b..9f69e02 100644
--- a/trove_dashboard/content/databases/tables.py
+++ b/trove_dashboard/content/databases/tables.py
@@ -410,7 +410,10 @@ class ResizeInstance(tables.LinkAction):
         return urlresolvers.reverse(self.url, args=[instance_id])
 
 
-class RootAction(tables.Action):
+class EnableRootAction(tables.Action):
+    name = "enable_root_action"
+    verbose_name = _("Enable Root")
+
     def handle(self, table, request, obj_ids):
         try:
             username, password = api.trove.root_enable(request, obj_ids)
@@ -420,23 +423,23 @@ class RootAction(tables.Action):
             messages.error(request, _('There was a problem enabling root.'))
 
 
-class EnableRootAction(RootAction):
-    name = "enable_root_action"
-    verbose_name = _("Enable Root")
-
-    def allowed(self, request, instance):
-        enabled = api.trove.root_show(request, instance.id)
-        return not enabled.rootEnabled
-
-
-class ResetRootAction(RootAction):
-    name = "reset_root_action"
-    verbose_name = _("Reset Password")
+class DisableRootAction(tables.Action):
+    name = "disable_root_action"
+    verbose_name = _("Disable Root")
 
     def allowed(self, request, instance):
         enabled = api.trove.root_show(request, instance.id)
         return enabled.rootEnabled
 
+    def single(self, table, request, object_id):
+        try:
+            api.trove.root_disable(request, object_id)
+            table.data[0].password = None
+            messages.success(request, _("Successfully disabled root access."))
+        except Exception as e:
+            messages.warning(request,
+                             _("Cannot disable root access: %s") % e.message)
+
 
 class ManageRoot(tables.LinkAction):
     name = "manage_root_action"
@@ -453,7 +456,8 @@ class ManageRoot(tables.LinkAction):
 
 class ManageRootTable(tables.DataTable):
     name = tables.Column('name', verbose_name=_('Instance Name'))
-    enabled = tables.Column('enabled', verbose_name=_('Root Enabled'),
+    enabled = tables.Column('enabled',
+                            verbose_name=_('Has Root Ever Been Enabled'),
                             filters=(d_filters.yesno, d_filters.capfirst),
                             help_text=_("Status if root was ever enabled "
                                         "for an instance."))
@@ -465,7 +469,7 @@ class ManageRootTable(tables.DataTable):
     class Meta(object):
         name = "manage_root"
         verbose_name = _("Manage Root")
-        row_actions = (EnableRootAction, ResetRootAction,)
+        row_actions = (EnableRootAction, DisableRootAction,)
 
 
 class UpdateRow(tables.Row):
diff --git a/trove_dashboard/content/databases/tests.py b/trove_dashboard/content/databases/tests.py
index 8d174f5..f05bf91 100644
--- a/trove_dashboard/content/databases/tests.py
+++ b/trove_dashboard/content/databases/tests.py
@@ -498,16 +498,15 @@ class DatabaseTests(test.TestCase):
         self.assertNotEqual(table.data[0].enabled, True)
         self.assertNotEqual(table.data[0].password, "password")
 
-    @test.create_stubs({api.trove: ('root_enable',)})
-    def test_reset_root(self):
-        api.trove.root_enable(IsA(http.HttpRequest), [u'id']) \
-            .AndReturn(("root", "newpassword"))
+    @test.create_stubs({api.trove: ('root_disable',)})
+    def test_disable_root(self):
+        api.trove.root_disable(IsA(http.HttpRequest), u'id')
 
         self.mox.ReplayAll()
 
         url = reverse('horizon:project:databases:manage_root',
                       args=['id'])
-        form_data = {"action": "manage_root__reset_root_action__%s" % 'id'}
+        form_data = {"action": "manage_root__disable_root_action__%s" % 'id'}
         req = self.factory.post(url, form_data)
 
         kwargs = {'instance_id': 'id'}
@@ -521,18 +520,18 @@ class DatabaseTests(test.TestCase):
         table.maybe_handle()
 
         self.assertEqual(table.data[0].enabled, True)
-        self.assertEqual(table.data[0].password, "newpassword")
+        self.assertEqual(table.data[0].password, None)
 
-    @test.create_stubs({api.trove: ('root_enable',)})
-    def test_reset_root_exception(self):
-        api.trove.root_enable(IsA(http.HttpRequest), [u'id']) \
+    @test.create_stubs({api.trove: ('root_disable',)})
+    def test_disable_root_exception(self):
+        api.trove.root_disable(IsA(http.HttpRequest), u'id') \
             .AndRaise(self.exceptions.trove)
 
         self.mox.ReplayAll()
 
         url = reverse('horizon:project:databases:manage_root',
                       args=['id'])
-        form_data = {"action": "manage_root__reset_root_action__%s" % 'id'}
+        form_data = {"action": "manage_root__disable_root_action__%s" % 'id'}
         req = self.factory.post(url, form_data)
 
         kwargs = {'instance_id': 'id'}
@@ -546,7 +545,7 @@ class DatabaseTests(test.TestCase):
         table.maybe_handle()
 
         self.assertEqual(table.data[0].enabled, True)
-        self.assertNotEqual(table.data[0].password, "newpassword")
+        self.assertEqual(table.data[0].password, "password")
 
     @test.create_stubs(
         {api.trove: ('instance_get', 'flavor_get', 'users_list',