Skip to content

Commit

Permalink
cherry pick pingcap#15825 to release-3.0
Browse files Browse the repository at this point in the history
Signed-off-by: sre-bot <sre-bot@pingcap.com>
  • Loading branch information
Lingyu Song authored and sre-bot committed Mar 30, 2020
1 parent 4eac3c0 commit f8c7e8c
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
2 changes: 2 additions & 0 deletions executor/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -626,6 +626,8 @@ func (b *executorBuilder) buildShow(v *plannercore.Show) Executor {
// The former determine privileges with roles, while the later doesn't.
vars := e.ctx.GetSessionVars()
e.User = vars.User
e.User.Hostname = vars.User.AuthHostname
e.User.Username = vars.User.AuthUsername
e.Roles = vars.ActiveRoles
}
if e.Tp == ast.ShowMasterStatus {
Expand Down
24 changes: 24 additions & 0 deletions executor/show_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,31 @@ func (s *testSuite2) TestShowErrors(c *C) {
tk.MustQuery("show errors").Check(testutil.RowsWithSep("|", "Error|1050|Table 'test.show_errors' already exists"))
}

<<<<<<< HEAD
func (s *testSuite2) TestIssue3641(c *C) {
=======
func (s *testSuite5) TestShowGrantsPrivilege(c *C) {
tk := testkit.NewTestKit(c, s.store)
tk.MustExec("create user show_grants")
tk.MustExec("show grants for show_grants")
tk1 := testkit.NewTestKit(c, s.store)
se, err := session.CreateSession4Test(s.store)
c.Assert(err, IsNil)
c.Assert(se.Auth(&auth.UserIdentity{Username: "show_grants", Hostname: "%"}, nil, nil), IsTrue)
tk1.Se = se
err = tk1.QueryToErr("show grants for root")
c.Assert(err.Error(), Equals, executor.ErrDBaccessDenied.GenWithStackByArgs("show_grants", "%", mysql.SystemDB).Error())
// Test show grants for user with auth host name `%`.
tk2 := testkit.NewTestKit(c, s.store)
se2, err := session.CreateSession4Test(s.store)
c.Assert(err, IsNil)
c.Assert(se2.Auth(&auth.UserIdentity{Username: "show_grants", Hostname: "127.0.0.1", AuthUsername: "show_grants", AuthHostname: "%"}, nil, nil), IsTrue)
tk2.Se = se2
tk2.MustQuery("show grants")
}

func (s *testSuite5) TestIssue3641(c *C) {
>>>>>>> 1142e65... privilege: fix user with `%` hostname can not show grants. (#15825)
tk := testkit.NewTestKit(c, s.store)
_, err := tk.Exec("show tables;")
c.Assert(err.Error(), Equals, plannercore.ErrNoDB.Error())
Expand Down

0 comments on commit f8c7e8c

Please sign in to comment.