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

MySQL数据库

开发平台:

Visual C++

  1. # Embedded server testing does not support grants
  2. -- source include/not_embedded.inc
  3. #
  4. # Test for bug #6116 "SET time_zone := ... requires access to mysql.time_zone
  5. # tables". We should allow implicit access to time zone description tables
  6. # even for unprivileged users.
  7. #
  8. # Let us prepare playground
  9. delete from mysql.user where user like 'mysqltest_%';
  10. delete from mysql.db where user like 'mysqltest_%';
  11. delete from mysql.tables_priv where user like 'mysqltest_%';
  12. delete from mysql.columns_priv where user like 'mysqltest_%';
  13. flush privileges;
  14. create table t1 (a int, b datetime);
  15. create table t2 (c int, d datetime);
  16. grant all privileges on test.* to mysqltest_1@localhost;
  17. connect (tzuser, localhost, mysqltest_1,,);
  18. connection tzuser;
  19. show grants for current_user();
  20. set time_zone= '+00:00';
  21. set time_zone= 'Europe/Moscow';
  22. select convert_tz('2004-10-21 19:00:00', 'Europe/Moscow', 'UTC');
  23. select convert_tz(b, 'Europe/Moscow', 'UTC') from t1;
  24. # Let us also check whenever multi-update works ok
  25. update t1, t2 set t1.b = convert_tz('2004-10-21 19:00:00', 'Europe/Moscow', 'UTC')
  26.               where t1.a = t2.c and t2.d = (select max(d) from t2);
  27. # But still these two statements should not work:
  28. --error 1044
  29. select * from mysql.time_zone_name;
  30. --error 1044
  31. select Name, convert_tz('2004-10-21 19:00:00', Name, 'UTC') from mysql.time_zone_name;
  32. #
  33. # Test for bug #6765 "Implicit access to time zone description tables
  34. # requires privileges for them if some table or column level grants
  35. # present"
  36. #
  37. connection default;
  38. # Let use some table-level grants instead of db-level 
  39. # to make life more interesting
  40. delete from mysql.db where user like 'mysqltest_%';
  41. flush privileges;
  42. grant all privileges on test.t1 to mysqltest_1@localhost;
  43. grant all privileges on test.t2 to mysqltest_1@localhost;
  44. # The test itself is almost the same as previous one
  45. connect (tzuser2, localhost, mysqltest_1,,);
  46. connection tzuser2;
  47. show grants for current_user();
  48. set time_zone= '+00:00';
  49. set time_zone= 'Europe/Moscow';
  50. select convert_tz('2004-11-31 12:00:00', 'Europe/Moscow', 'UTC');
  51. select convert_tz(b, 'Europe/Moscow', 'UTC') from t1;
  52. update t1, t2 set t1.b = convert_tz('2004-11-30 12:00:00', 'Europe/Moscow', 'UTC')
  53.               where t1.a = t2.c and t2.d = (select max(d) from t2);
  54. # Again these two statements should not work (but with different errors):
  55. --error 1142
  56. select * from mysql.time_zone_name;
  57. --error 1142
  58. select Name, convert_tz('2004-11-30 12:00:00', Name, 'UTC') from mysql.time_zone_name;
  59. #
  60. # Bug #9979: Use of CONVERT_TZ in multiple-table UPDATE causes bogus
  61. # privilege error
  62. #
  63. drop table t1, t2;
  64. create table t1 (a int, b datetime);
  65. create table t2 (a int, b varchar(40));
  66. update t1 set b = '2005-01-01 10:00';
  67. update t1 set b = convert_tz(b, 'UTC', 'UTC');
  68. update t1 join t2 on (t1.a = t2.a) set t1.b = '2005-01-01 10:00' where t2.b = 'foo';
  69. update t1 join t2 on (t1.a = t2.a) set t1.b = convert_tz('2005-01-01 10:00','UTC','UTC') where t2.b = 'foo';
  70. # Clean-up
  71. connection default;
  72. delete from mysql.user where user like 'mysqltest_%';
  73. delete from mysql.db where user like 'mysqltest_%';
  74. delete from mysql.tables_priv where user like 'mysqltest_%';
  75. flush privileges;
  76. drop table t1, t2;
  77. # End of 4.1 tests