From 7026c866ebc8c89fd7706a421f95c0dc10c923f1 Mon Sep 17 00:00:00 2001 From: pingcap-github-bot Date: Sat, 14 Mar 2020 18:50:25 +0800 Subject: [PATCH] privilege: fix compatibility of DBIsVisible (#14862) (#14939) --- 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 d40bccc664036..7a29ab21bb110 100644 --- a/privilege/privileges/cache.go +++ b/privilege/privileges/cache.go @@ -45,7 +45,7 @@ var ( columnPrivMask = computePrivMask(mysql.AllColumnPrivs) ) -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 21cfbc94be54e..3bf5eac2e861c 100644 --- a/privilege/privileges/cache_test.go +++ b/privilege/privileges/cache_test.go @@ -493,4 +493,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") }