ps_grant.test
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. # Can't test grants with embedded server
  2. -- source include/not_embedded.inc
  3. let $type= 'MYISAM' ;
  4. ################ GRANT/REVOKE/DROP affecting a parallel session ################
  5. --disable_query_log
  6. select '------ grant/revoke/drop affects a parallel session test ------'
  7.   as test_sequence ;
  8. --enable_query_log
  9. #---------------------------------------------------------------------#
  10. #  Here we test that:
  11. #  1. A new GRANT will be visible within another sessions.            #
  12. #                                                                     #
  13. #  Let's assume there is a parallel session with an already prepared  #
  14. #  statement for a table.                                             #
  15. #  A DROP TABLE will affect the EXECUTE properties.                   #
  16. #  A REVOKE will affect the EXECUTE properties.                       #
  17. #---------------------------------------------------------------------#
  18. # Who am I ?
  19. # this is different across different systems:
  20. # select current_user(), user() ;
  21. #### create a new user account ####
  22. ## There should be no grants for that non existing user
  23. --error 1141
  24. show grants for second_user@localhost ;
  25. ## create a new user account by using GRANT statements on t9
  26. create database mysqltest;
  27. # create the tables (t1 and t9) used in many tests
  28. use mysqltest;
  29. --disable_query_log
  30. --source include/ps_create.inc
  31. --source include/ps_renew.inc
  32. --enable_query_log
  33. eval use $DB;
  34. grant usage on mysqltest.* to second_user@localhost
  35. identified by 'looser' ;
  36. grant select on mysqltest.t9 to second_user@localhost
  37. identified by 'looser' ;
  38. show grants for second_user@localhost ;
  39. #### establish a second session to the new user account
  40. connect (con3,localhost,second_user,looser,mysqltest);
  41. ## switch to the second session
  42. connection con3;
  43. # Who am I ?
  44. select current_user();
  45. ## check the access rights
  46. show grants for current_user();
  47. prepare s_t9 from 'select c1 as my_col 
  48.                                  from t9 where c1= 1' ;
  49. execute s_t9 ;
  50. # check that we cannot do a SELECT on the table t1;
  51. --error 1142
  52. select a as my_col from t1;
  53. #### give access rights to t1 and drop table t9
  54. ## switch back to the first session
  55. connection default;
  56. grant select on mysqltest.t1 to second_user@localhost
  57. identified by 'looser' ;
  58. show grants for second_user@localhost ;
  59. drop table mysqltest.t9 ;
  60. show grants for second_user@localhost ;
  61. #### check the access as new user
  62. ## switch to the second session
  63. connection con3;
  64. ######## Question 1: The table t1 should be now accessible. ########
  65. show grants for second_user@localhost ;
  66. prepare s_t1 from 'select a as my_col from t1' ;
  67. execute s_t1 ;
  68. ######## Question 2: The table t9 does not exist. ########
  69. --error 1146
  70. execute s_t9 ;
  71. deallocate prepare s_t9;
  72. #### revoke the access rights to t1
  73. ## switch back to the first session
  74. connection default;
  75. revoke all privileges on mysqltest.t1 from second_user@localhost
  76. identified by 'looser' ;
  77. show grants for second_user@localhost ;
  78. #### check the access as new user
  79. ## switch to the second session
  80. connection con3;
  81. show grants for second_user@localhost ;
  82. ######## Question 2: The table t1 should be now not accessible. ########
  83. --error 1142
  84. execute s_t1 ;
  85. ## cleanup
  86. ## switch back to the first session
  87. connection default;
  88. ## disconnect the second session
  89. disconnect con3 ;
  90. ## remove all rights of second_user@localhost
  91. revoke all privileges, grant option from second_user@localhost ;
  92. show grants for second_user@localhost ;
  93. drop user second_user@localhost ;
  94. commit ;
  95. --error 1141
  96. show grants for second_user@localhost ;
  97. drop database mysqltest;
  98. # End of 4.1 tests