From 8431c1025863c683e63aa9edb4dac5cb1a5db1a4 Mon Sep 17 00:00:00 2001 From: Lingyu Song Date: Tue, 25 Feb 2020 21:25:36 +0800 Subject: [PATCH] privilege: fix compatibility of DBIsVisible (#14862) --- privilege/privileges/cache.go | 2 +- privilege/privileges/cache_test.go | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/privilege/privileges/cache.go b/privilege/privileges/cache.go index 288e122326010..f1110edfc5490 100644 --- a/privilege/privileges/cache.go +++ b/privilege/privileges/cache.go @@ -44,7 +44,7 @@ var ( tablePrivMask = computePrivMask(mysql.AllTablePrivs) ) -const globalDBVisible = mysql.CreatePriv | mysql.SelectPriv | mysql.InsertPriv | mysql.UpdatePriv | mysql.DeletePriv | mysql.ShowDBPriv | mysql.DropPriv | mysql.AlterPriv | mysql.IndexPriv | mysql.CreateViewPriv | mysql.ShowViewPriv | mysql.GrantPriv +const globalDBVisible = mysql.CreatePriv | mysql.SelectPriv | mysql.InsertPriv | mysql.UpdatePriv | mysql.DeletePriv | mysql.ShowDBPriv | mysql.DropPriv | mysql.AlterPriv | mysql.IndexPriv | mysql.CreateViewPriv | mysql.ShowViewPriv | mysql.GrantPriv | mysql.TriggerPriv | mysql.ReferencesPriv | mysql.ExecutePriv func computePrivMask(privs []mysql.PrivilegeType) mysql.PrivilegeType { var mask mysql.PrivilegeType diff --git a/privilege/privileges/cache_test.go b/privilege/privileges/cache_test.go index 09fbe2aaa9f25..bbc8a1462448b 100644 --- a/privilege/privileges/cache_test.go +++ b/privilege/privileges/cache_test.go @@ -553,4 +553,25 @@ func (s *testCacheSuite) TestDBIsVisible(c *C) { isVisible = p.DBIsVisible("testvisdb6", "%", "visdb") c.Assert(isVisible, IsTrue) mustExec(c, se, "TRUNCATE TABLE mysql.user") + + mustExec(c, se, `INSERT INTO mysql.user (Host, User, Trigger_priv) VALUES ("%", "testvisdb7", "Y")`) + err = p.LoadUserTable(se) + c.Assert(err, IsNil) + isVisible = p.DBIsVisible("testvisdb7", "%", "visdb") + c.Assert(isVisible, IsTrue) + mustExec(c, se, "TRUNCATE TABLE mysql.user") + + mustExec(c, se, `INSERT INTO mysql.user (Host, User, References_priv) VALUES ("%", "testvisdb8", "Y")`) + err = p.LoadUserTable(se) + c.Assert(err, IsNil) + isVisible = p.DBIsVisible("testvisdb8", "%", "visdb") + c.Assert(isVisible, IsTrue) + mustExec(c, se, "TRUNCATE TABLE mysql.user") + + mustExec(c, se, `INSERT INTO mysql.user (Host, User, Execute_priv) VALUES ("%", "testvisdb9", "Y")`) + err = p.LoadUserTable(se) + c.Assert(err, IsNil) + isVisible = p.DBIsVisible("testvisdb9", "%", "visdb") + c.Assert(isVisible, IsTrue) + mustExec(c, se, "TRUNCATE TABLE mysql.user") }