diff options
Diffstat (limited to 'tests/grant.pl')
-rw-r--r-- | tests/grant.pl | 85 |
1 files changed, 82 insertions, 3 deletions
diff --git a/tests/grant.pl b/tests/grant.pl index 8ec83c85349..fb73be786b6 100644 --- a/tests/grant.pl +++ b/tests/grant.pl @@ -11,7 +11,7 @@ use strict; use vars qw($dbh $user_dbh $opt_help $opt_Information $opt_force $opt_debug $opt_verbose $opt_server $opt_root_user $opt_password $opt_user $opt_database $opt_host $version $user $tables_cols $columns_cols - $opt_silent); + $tmp_table $opt_silent); $version="1.1"; $opt_help=$opt_Information=$opt_force=$opt_debug=$opt_verbose=$opt_silent=0; @@ -36,6 +36,8 @@ $|=1; $tables_cols="Host, Db, User, Table_name, Grantor, Table_priv, Column_priv"; $columns_cols="Host, Db, User, Table_name, Column_name, Column_priv"; +$tmp_table="/tmp/mysql-grant.test"; # Can't use $$ as we are logging result +unlink($tmp_table); # # clear grant tables @@ -61,6 +63,12 @@ user_connect(1); #goto test; # +# Enable column grant code +# +safe_query("grant select(user) on mysql.user to $user"); +safe_query("revoke select(user) on mysql.user from $user"); + +# # Test grants on user level # @@ -73,6 +81,7 @@ user_connect(0); user_query("select * from mysql.user where user = '$opt_user'"); user_query("select * from mysql.db where user = '$opt_user'"); safe_query("grant select on *.* to $user,$user"); +safe_query("show grants for $user"); # The following should fail user_query("insert into mysql.user (host,user) values ('error','$opt_user')",1); @@ -318,6 +327,7 @@ safe_query("select $tables_cols from mysql.tables_priv"); safe_query("revoke ALL PRIVILEGES on $opt_database.test from $user"); safe_query("select $tables_cols from mysql.tables_priv"); safe_query("revoke GRANT OPTION on $opt_database.test from $user",1); + # # Test grants on database level # @@ -402,20 +412,89 @@ safe_query("select $tables_cols from mysql.tables_priv where user = '$opt_user'" safe_query("select $columns_cols from mysql.columns_priv where user = '$opt_user'"); # -# Test IDENTIFIED BY -# +# Clear up privileges to make future tests easier safe_query("delete from user where user='$opt_user'"); +safe_query("delete from db where user='$opt_user'"); safe_query("flush privileges"); +safe_query("show grants for $user",1); + +# +# Test IDENTIFIED BY +# + safe_query("grant ALL PRIVILEGES on $opt_database.test to $user identified by 'dummy', ${opt_user}\@127.0.0.1 identified by 'dummy2'"); user_connect(0,"dummy"); safe_query("grant SELECT on $opt_database.* to $user identified by ''"); user_connect(0); +safe_query("revoke ALL PRIVILEGES on $opt_database.test from $user identified by '', ${opt_user}\@127.0.0.1 identified by 'dummy2'"); +safe_query("revoke ALL PRIVILEGES on $opt_database.* from $user identified by ''"); + +safe_query("show grants for $user"); + +# +# Test bug reported in SELECT INTO OUTFILE +# + +safe_query("create table $opt_database.test3 (a int, b int)"); +safe_query("grant SELECT on $opt_database.test3 to $user"); +safe_query("grant FILE on *.* to $user"); +safe_query("insert into $opt_database.test3 values (1,1)"); +user_connect(0); +user_query("select * into outfile '$tmp_table' from $opt_database.test3"); +safe_query("revoke SELECT on $opt_database.test3 from $user"); +safe_query("grant SELECT(a) on $opt_database.test3 to $user"); +user_query("select a from $opt_database.test3"); +user_query("select * from $opt_database.test3",1); +user_query("select a,b from $opt_database.test3",1); +user_query("select b from $opt_database.test3",1); + +safe_query("revoke SELECT(a) on $opt_database.test3 from $user"); +safe_query("revoke FILE on *.* from $user"); +safe_query("drop table $opt_database.test3"); + +# +# Test privileges needed for LOCK TABLES +# + +safe_query("create table $opt_database.test3 (a int)"); +user_connect(1); +safe_query("grant INSERT on $opt_database.test3 to $user"); +user_connect(0); +user_query("select * into outfile '$tmp_table' from $opt_database.test3",1); +safe_query("grant SELECT on $opt_database.test3 to $user"); +user_connect(0); +user_query("LOCK TABLES $opt_database.test3 READ",1); +safe_query("grant LOCK TABLES on *.* to $user"); +safe_query("show grants for $user"); +safe_query("select * from mysql.user where user='$opt_user'"); +user_connect(0); +user_query("LOCK TABLES $opt_database.test3 READ"); +user_query("UNLOCK TABLES"); +safe_query("revoke SELECT,INSERT,UPDATE,DELETE on $opt_database.test3 from $user"); +user_connect(0); +safe_query("revoke LOCK TABLES on *.* from $user"); +user_connect(1); +safe_query("drop table $opt_database.test3"); + +# +# test new privileges in 4.0.2 +# + +safe_query("show grants for $user"); +safe_query("grant all on *.* to $user WITH MAX_QUERIES_PER_HOUR 1 MAX_UPDATES_PER_HOUR 2 MAX_CONNECTIONS_PER_HOUR 3"); +safe_query("show grants for $user"); +safe_query("revoke LOCK TABLES on *.* from $user"); +safe_query("flush privileges"); +safe_query("show grants for $user"); +safe_query("revoke ALL PRIVILEGES on *.* from $user"); +safe_query("show grants for $user"); # # Clean up things # +unlink($tmp_table); safe_query("drop database $opt_database"); safe_query("delete from user where user='$opt_user'"); safe_query("delete from db where user='$opt_user'"); |