mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
merge from 5.1-bugteam of merge from 5.1-mtr
This commit is contained in:
@ -199,6 +199,8 @@ static void init_re(void);
|
|||||||
static int match_re(my_regex_t *, char *);
|
static int match_re(my_regex_t *, char *);
|
||||||
static void free_re(void);
|
static void free_re(void);
|
||||||
|
|
||||||
|
static uint opt_protocol=0;
|
||||||
|
|
||||||
DYNAMIC_ARRAY q_lines;
|
DYNAMIC_ARRAY q_lines;
|
||||||
|
|
||||||
#include "sslopt-vars.h"
|
#include "sslopt-vars.h"
|
||||||
@ -615,8 +617,11 @@ public:
|
|||||||
|
|
||||||
if ((bytes= fread(buf, 1, sizeof(buf), m_file)) <= 0)
|
if ((bytes= fread(buf, 1, sizeof(buf), m_file)) <= 0)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Failed to read from '%s', errno: %d\n",
|
// ferror=0 will happen here if no queries executed yet
|
||||||
m_file_name, errno);
|
if (ferror(m_file))
|
||||||
|
fprintf(stderr,
|
||||||
|
"Failed to read from '%s', errno: %d, feof:%d, ferror:%d\n",
|
||||||
|
m_file_name, errno, feof(m_file), ferror(m_file));
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1080,8 +1085,9 @@ void handle_command_error(struct st_command *command, uint error)
|
|||||||
command->first_word_len, command->query, error));
|
command->first_word_len, command->query, error));
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
die("command \"%.*s\" failed with wrong error: %d",
|
if (command->expected_errors.count > 0)
|
||||||
command->first_word_len, command->query, error);
|
die("command \"%.*s\" failed with wrong error: %d",
|
||||||
|
command->first_word_len, command->query, error);
|
||||||
}
|
}
|
||||||
else if (command->expected_errors.err[0].type == ERR_ERRNO &&
|
else if (command->expected_errors.err[0].type == ERR_ERRNO &&
|
||||||
command->expected_errors.err[0].code.errnum != 0)
|
command->expected_errors.err[0].code.errnum != 0)
|
||||||
@ -1350,14 +1356,14 @@ void log_msg(const char *fmt, ...)
|
|||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void cat_file(DYNAMIC_STRING* ds, const char* filename)
|
int cat_file(DYNAMIC_STRING* ds, const char* filename)
|
||||||
{
|
{
|
||||||
int fd;
|
int fd;
|
||||||
size_t len;
|
size_t len;
|
||||||
char buff[512];
|
char buff[512];
|
||||||
|
|
||||||
if ((fd= my_open(filename, O_RDONLY, MYF(0))) < 0)
|
if ((fd= my_open(filename, O_RDONLY, MYF(0))) < 0)
|
||||||
die("Failed to open file '%s'", filename);
|
return 1;
|
||||||
while((len= my_read(fd, (uchar*)&buff,
|
while((len= my_read(fd, (uchar*)&buff,
|
||||||
sizeof(buff), MYF(0))) > 0)
|
sizeof(buff), MYF(0))) > 0)
|
||||||
{
|
{
|
||||||
@ -1381,6 +1387,7 @@ void cat_file(DYNAMIC_STRING* ds, const char* filename)
|
|||||||
dynstr_append_mem(ds, start, p-start);
|
dynstr_append_mem(ds, start, p-start);
|
||||||
}
|
}
|
||||||
my_close(fd, MYF(0));
|
my_close(fd, MYF(0));
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -2433,6 +2440,9 @@ void eval_expr(VAR *v, const char *p, const char **p_end)
|
|||||||
if ((vp= var_get(p, p_end, 0, 0)))
|
if ((vp= var_get(p, p_end, 0, 0)))
|
||||||
var_copy(v, vp);
|
var_copy(v, vp);
|
||||||
|
|
||||||
|
/* Apparently it is not safe to assume null-terminated string */
|
||||||
|
v->str_val[v->str_val_len]= 0;
|
||||||
|
|
||||||
/* Make sure there was just a $variable and nothing else */
|
/* Make sure there was just a $variable and nothing else */
|
||||||
const char* end= *p_end + 1;
|
const char* end= *p_end + 1;
|
||||||
if (end < expected_end)
|
if (end < expected_end)
|
||||||
@ -2779,8 +2789,9 @@ void do_exec(struct st_command *command)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
dynstr_free(&ds_cmd);
|
dynstr_free(&ds_cmd);
|
||||||
die("command \"%s\" failed with wrong error: %d",
|
if (command->expected_errors.count > 0)
|
||||||
command->first_argument, status);
|
die("command \"%s\" failed with wrong error: %d",
|
||||||
|
command->first_argument, status);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (command->expected_errors.err[0].type == ERR_ERRNO &&
|
else if (command->expected_errors.err[0].type == ERR_ERRNO &&
|
||||||
@ -2924,6 +2935,41 @@ void do_system(struct st_command *command)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
SYNOPSIS
|
||||||
|
set_wild_chars
|
||||||
|
set true to set * etc. as wild char, false to reset
|
||||||
|
|
||||||
|
DESCRIPTION
|
||||||
|
Auxiliary function to set "our" wild chars before calling wild_compare
|
||||||
|
This is needed because the default values are changed to SQL syntax
|
||||||
|
in mysqltest_embedded.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void set_wild_chars (my_bool set)
|
||||||
|
{
|
||||||
|
static char old_many= 0, old_one, old_prefix;
|
||||||
|
|
||||||
|
if (set)
|
||||||
|
{
|
||||||
|
if (wild_many == '*') return; // No need
|
||||||
|
old_many= wild_many;
|
||||||
|
old_one= wild_one;
|
||||||
|
old_prefix= wild_prefix;
|
||||||
|
wild_many= '*';
|
||||||
|
wild_one= '?';
|
||||||
|
wild_prefix= 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (! old_many) return; // Was not set
|
||||||
|
wild_many= old_many;
|
||||||
|
wild_one= old_one;
|
||||||
|
wild_prefix= old_prefix;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
do_remove_file
|
do_remove_file
|
||||||
@ -3000,6 +3046,10 @@ void do_remove_files_wildcard(struct st_command *command)
|
|||||||
dir_separator[0]= FN_LIBCHAR;
|
dir_separator[0]= FN_LIBCHAR;
|
||||||
dir_separator[1]= 0;
|
dir_separator[1]= 0;
|
||||||
dynstr_append(&ds_file_to_remove, dir_separator);
|
dynstr_append(&ds_file_to_remove, dir_separator);
|
||||||
|
|
||||||
|
/* Set default wild chars for wild_compare, is changed in embedded mode */
|
||||||
|
set_wild_chars(1);
|
||||||
|
|
||||||
for (i= 0; i < (uint) dir_info->number_off_files; i++)
|
for (i= 0; i < (uint) dir_info->number_off_files; i++)
|
||||||
{
|
{
|
||||||
file= dir_info->dir_entry + i;
|
file= dir_info->dir_entry + i;
|
||||||
@ -3019,6 +3069,7 @@ void do_remove_files_wildcard(struct st_command *command)
|
|||||||
if (error)
|
if (error)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
set_wild_chars(0);
|
||||||
my_dirend(dir_info);
|
my_dirend(dir_info);
|
||||||
|
|
||||||
end:
|
end:
|
||||||
@ -3264,6 +3315,7 @@ static int get_list_files(DYNAMIC_STRING *ds, const DYNAMIC_STRING *ds_dirname,
|
|||||||
/* Note that my_dir sorts the list if not given any flags */
|
/* Note that my_dir sorts the list if not given any flags */
|
||||||
if (!(dir_info= my_dir(ds_dirname->str, MYF(0))))
|
if (!(dir_info= my_dir(ds_dirname->str, MYF(0))))
|
||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
|
set_wild_chars(1);
|
||||||
for (i= 0; i < (uint) dir_info->number_off_files; i++)
|
for (i= 0; i < (uint) dir_info->number_off_files; i++)
|
||||||
{
|
{
|
||||||
file= dir_info->dir_entry + i;
|
file= dir_info->dir_entry + i;
|
||||||
@ -3277,6 +3329,7 @@ static int get_list_files(DYNAMIC_STRING *ds, const DYNAMIC_STRING *ds_dirname,
|
|||||||
dynstr_append(ds, file->name);
|
dynstr_append(ds, file->name);
|
||||||
dynstr_append(ds, "\n");
|
dynstr_append(ds, "\n");
|
||||||
}
|
}
|
||||||
|
set_wild_chars(0);
|
||||||
my_dirend(dir_info);
|
my_dirend(dir_info);
|
||||||
DBUG_RETURN(0);
|
DBUG_RETURN(0);
|
||||||
}
|
}
|
||||||
@ -3559,6 +3612,7 @@ void do_append_file(struct st_command *command)
|
|||||||
|
|
||||||
void do_cat_file(struct st_command *command)
|
void do_cat_file(struct st_command *command)
|
||||||
{
|
{
|
||||||
|
int error;
|
||||||
static DYNAMIC_STRING ds_filename;
|
static DYNAMIC_STRING ds_filename;
|
||||||
const struct command_arg cat_file_args[] = {
|
const struct command_arg cat_file_args[] = {
|
||||||
{ "filename", ARG_STRING, TRUE, &ds_filename, "File to read from" }
|
{ "filename", ARG_STRING, TRUE, &ds_filename, "File to read from" }
|
||||||
@ -3573,8 +3627,8 @@ void do_cat_file(struct st_command *command)
|
|||||||
|
|
||||||
DBUG_PRINT("info", ("Reading from, file: %s", ds_filename.str));
|
DBUG_PRINT("info", ("Reading from, file: %s", ds_filename.str));
|
||||||
|
|
||||||
cat_file(&ds_res, ds_filename.str);
|
error= cat_file(&ds_res, ds_filename.str);
|
||||||
|
handle_command_error(command, error);
|
||||||
dynstr_free(&ds_filename);
|
dynstr_free(&ds_filename);
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
@ -3836,8 +3890,9 @@ void do_perl(struct st_command *command)
|
|||||||
}
|
}
|
||||||
error= pclose(res_file);
|
error= pclose(res_file);
|
||||||
|
|
||||||
/* Remove the temporary file */
|
/* Remove the temporary file, but keep it if perl failed */
|
||||||
my_delete(temp_file_path, MYF(0));
|
if (!error)
|
||||||
|
my_delete(temp_file_path, MYF(0));
|
||||||
|
|
||||||
handle_command_error(command, WEXITSTATUS(error));
|
handle_command_error(command, WEXITSTATUS(error));
|
||||||
}
|
}
|
||||||
@ -4950,7 +5005,7 @@ int connect_n_handle_errors(struct st_command *command,
|
|||||||
ds= &ds_res;
|
ds= &ds_res;
|
||||||
|
|
||||||
/* Only log if an error is expected */
|
/* Only log if an error is expected */
|
||||||
if (!command->abort_on_error &&
|
if (command->expected_errors.count > 0 &&
|
||||||
!disable_query_log)
|
!disable_query_log)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
@ -5196,11 +5251,13 @@ void do_connect(struct st_command *command)
|
|||||||
#ifdef __WIN__
|
#ifdef __WIN__
|
||||||
if (con_pipe)
|
if (con_pipe)
|
||||||
{
|
{
|
||||||
uint protocol= MYSQL_PROTOCOL_PIPE;
|
opt_protocol= MYSQL_PROTOCOL_PIPE;
|
||||||
mysql_options(&con_slot->mysql, MYSQL_OPT_PROTOCOL, &protocol);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (opt_protocol)
|
||||||
|
mysql_options(&con_slot->mysql, MYSQL_OPT_PROTOCOL, (char*) &opt_protocol);
|
||||||
|
|
||||||
#ifdef HAVE_SMEM
|
#ifdef HAVE_SMEM
|
||||||
if (con_shm)
|
if (con_shm)
|
||||||
{
|
{
|
||||||
@ -5372,8 +5429,20 @@ void do_block(enum block_cmd cmd, struct st_command* command)
|
|||||||
/* Define inner block */
|
/* Define inner block */
|
||||||
cur_block++;
|
cur_block++;
|
||||||
cur_block->cmd= cmd;
|
cur_block->cmd= cmd;
|
||||||
cur_block->ok= (v.int_val ? TRUE : FALSE);
|
if (v.int_val)
|
||||||
|
{
|
||||||
|
cur_block->ok= TRUE;
|
||||||
|
} else
|
||||||
|
/* Any non-empty string which does not begin with 0 is also TRUE */
|
||||||
|
{
|
||||||
|
p= v.str_val;
|
||||||
|
/* First skip any leading white space or unary -+ */
|
||||||
|
while (*p && ((my_isspace(charset_info, *p) || *p == '-' || *p == '+')))
|
||||||
|
p++;
|
||||||
|
|
||||||
|
cur_block->ok= (*p && *p != '0') ? TRUE : FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if (not_expr)
|
if (not_expr)
|
||||||
cur_block->ok = !cur_block->ok;
|
cur_block->ok = !cur_block->ok;
|
||||||
|
|
||||||
@ -5934,6 +6003,8 @@ static struct my_option my_long_options[] =
|
|||||||
GET_INT, REQUIRED_ARG, 128, 8, 5120, 0, 0, 0},
|
GET_INT, REQUIRED_ARG, 128, 8, 5120, 0, 0, 0},
|
||||||
{"password", 'p', "Password to use when connecting to server.",
|
{"password", 'p', "Password to use when connecting to server.",
|
||||||
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
|
{"protocol", OPT_MYSQL_PROTOCOL, "The protocol of connection (tcp,socket,pipe,memory).",
|
||||||
|
0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
|
||||||
{"port", 'P', "Port number to use for connection or 0 for default to, in "
|
{"port", 'P', "Port number to use for connection or 0 for default to, in "
|
||||||
"order of preference, my.cnf, $MYSQL_TCP_PORT, "
|
"order of preference, my.cnf, $MYSQL_TCP_PORT, "
|
||||||
#if MYSQL_PORT_DEFAULT == 0
|
#if MYSQL_PORT_DEFAULT == 0
|
||||||
@ -6070,7 +6141,7 @@ void read_embedded_server_arguments(const char *name)
|
|||||||
|
|
||||||
|
|
||||||
static my_bool
|
static my_bool
|
||||||
get_one_option(int optid, const struct my_option *, char *argument)
|
get_one_option(int optid, const struct my_option *opt, char *argument)
|
||||||
{
|
{
|
||||||
switch(optid) {
|
switch(optid) {
|
||||||
case '#':
|
case '#':
|
||||||
@ -6156,6 +6227,10 @@ get_one_option(int optid, const struct my_option *, char *argument)
|
|||||||
case 'V':
|
case 'V':
|
||||||
print_version();
|
print_version();
|
||||||
exit(0);
|
exit(0);
|
||||||
|
case OPT_MYSQL_PROTOCOL:
|
||||||
|
opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
|
||||||
|
opt->name);
|
||||||
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
usage();
|
usage();
|
||||||
exit(0);
|
exit(0);
|
||||||
@ -7617,9 +7692,6 @@ void get_command_type(struct st_command* command)
|
|||||||
sizeof(saved_expected_errors));
|
sizeof(saved_expected_errors));
|
||||||
DBUG_PRINT("info", ("There are %d expected errors",
|
DBUG_PRINT("info", ("There are %d expected errors",
|
||||||
command->expected_errors.count));
|
command->expected_errors.count));
|
||||||
command->abort_on_error= (command->expected_errors.count == 0 &&
|
|
||||||
abort_on_error);
|
|
||||||
|
|
||||||
DBUG_VOID_RETURN;
|
DBUG_VOID_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7910,6 +7982,9 @@ int main(int argc, char **argv)
|
|||||||
mysql_options(&con->mysql, MYSQL_SET_CHARSET_DIR,
|
mysql_options(&con->mysql, MYSQL_SET_CHARSET_DIR,
|
||||||
opt_charsets_dir);
|
opt_charsets_dir);
|
||||||
|
|
||||||
|
if (opt_protocol)
|
||||||
|
mysql_options(&con->mysql,MYSQL_OPT_PROTOCOL,(char*)&opt_protocol);
|
||||||
|
|
||||||
#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
|
#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
|
||||||
|
|
||||||
if (opt_use_ssl)
|
if (opt_use_ssl)
|
||||||
@ -7968,6 +8043,10 @@ int main(int argc, char **argv)
|
|||||||
command->type= Q_COMMENT;
|
command->type= Q_COMMENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (Re-)set abort_on_error for this command */
|
||||||
|
command->abort_on_error= (command->expected_errors.count == 0 &&
|
||||||
|
abort_on_error);
|
||||||
|
|
||||||
/* delimiter needs to be executed so we can continue to parse */
|
/* delimiter needs to be executed so we can continue to parse */
|
||||||
my_bool ok_to_do= cur_block->ok || command->type == Q_DELIMITER;
|
my_bool ok_to_do= cur_block->ok || command->type == Q_DELIMITER;
|
||||||
/*
|
/*
|
||||||
@ -8369,16 +8448,6 @@ int main(int argc, char **argv)
|
|||||||
check_result();
|
check_result();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
/*
|
|
||||||
No result_file_name specified, the result
|
|
||||||
has been printed to stdout, exit with error
|
|
||||||
unless script has called "exit" to indicate success
|
|
||||||
*/
|
|
||||||
if (abort_flag == 0)
|
|
||||||
die("Exit with failure! Call 'exit' in script to return with sucess");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1910,7 +1910,7 @@ select hex(s1) from t4;
|
|||||||
drop table t1,t2,t3,t4;
|
drop table t1,t2,t3,t4;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (test_foreign_keys)
|
if ($test_foreign_keys)
|
||||||
{
|
{
|
||||||
eval create table t1 (a int primary key,s1 varbinary(3) not null unique) engine=$engine_type;
|
eval create table t1 (a int primary key,s1 varbinary(3) not null unique) engine=$engine_type;
|
||||||
eval create table t2 (s1 binary(2) not null, constraint c foreign key(s1) references t1(s1) on update cascade) engine=$engine_type;
|
eval create table t2 (s1 binary(2) not null, constraint c foreign key(s1) references t1(s1) on update cascade) engine=$engine_type;
|
||||||
@ -2407,7 +2407,7 @@ drop table t1, t2, t3, t5, t6, t8, t9;
|
|||||||
}
|
}
|
||||||
# End transactional tests
|
# End transactional tests
|
||||||
|
|
||||||
if (test_foreign_keys)
|
if ($test_foreign_keys)
|
||||||
{
|
{
|
||||||
# bug 18934, "InnoDB crashes when table uses column names like DB_ROW_ID"
|
# bug 18934, "InnoDB crashes when table uses column names like DB_ROW_ID"
|
||||||
--error 1005
|
--error 1005
|
||||||
|
@ -188,6 +188,8 @@ sub new {
|
|||||||
|
|
||||||
while ( my $line= <$F> ) {
|
while ( my $line= <$F> ) {
|
||||||
chomp($line);
|
chomp($line);
|
||||||
|
# Remove any trailing CR from Windows edited files
|
||||||
|
$line=~ s/\cM$//;
|
||||||
|
|
||||||
# [group]
|
# [group]
|
||||||
if ( $line =~ /^\[(.*)\]/ ) {
|
if ( $line =~ /^\[(.*)\]/ ) {
|
||||||
|
@ -30,6 +30,13 @@ sub get_basedir {
|
|||||||
return $basedir;
|
return $basedir;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub get_testdir {
|
||||||
|
my ($self, $group)= @_;
|
||||||
|
my $testdir= $group->if_exist('testdir') ||
|
||||||
|
$self->{ARGS}->{testdir};
|
||||||
|
return $testdir;
|
||||||
|
}
|
||||||
|
|
||||||
# Retrive build directory (which is different from basedir in out-of-source build)
|
# Retrive build directory (which is different from basedir in out-of-source build)
|
||||||
sub get_bindir {
|
sub get_bindir {
|
||||||
if (defined $ENV{MTR_BINDIR})
|
if (defined $ENV{MTR_BINDIR})
|
||||||
@ -151,9 +158,8 @@ sub fix_secure_file_priv {
|
|||||||
|
|
||||||
sub fix_std_data {
|
sub fix_std_data {
|
||||||
my ($self, $config, $group_name, $group)= @_;
|
my ($self, $config, $group_name, $group)= @_;
|
||||||
return my_find_dir($self->get_basedir($group),
|
my $testdir= $self->get_testdir($group);
|
||||||
["share/mysql-test", "mysql-test"],
|
return "$testdir/std_data";
|
||||||
"std_data");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub ssl_supported {
|
sub ssl_supported {
|
||||||
|
@ -60,11 +60,12 @@ use My::Platform;
|
|||||||
|
|
||||||
my %running;
|
my %running;
|
||||||
my $_verbose= 0;
|
my $_verbose= 0;
|
||||||
|
my $start_exit= 0;
|
||||||
|
|
||||||
END {
|
END {
|
||||||
# Kill any children still running
|
# Kill any children still running
|
||||||
for my $proc (values %running){
|
for my $proc (values %running){
|
||||||
if ( $proc->is_child($$) ){
|
if ( $proc->is_child($$) and ! $start_exit){
|
||||||
#print "Killing: $proc\n";
|
#print "Killing: $proc\n";
|
||||||
if ($proc->wait_one(0)){
|
if ($proc->wait_one(0)){
|
||||||
$proc->kill();
|
$proc->kill();
|
||||||
@ -161,6 +162,11 @@ sub new {
|
|||||||
|
|
||||||
push(@safe_args, "--");
|
push(@safe_args, "--");
|
||||||
push(@safe_args, $path); # The program safe_process should execute
|
push(@safe_args, $path); # The program safe_process should execute
|
||||||
|
|
||||||
|
if ($start_exit) { # Bypass safe_process instead, start program directly
|
||||||
|
@safe_args= ();
|
||||||
|
$safe_path= $path;
|
||||||
|
}
|
||||||
push(@safe_args, @$$args);
|
push(@safe_args, @$$args);
|
||||||
|
|
||||||
print "### safe_path: ", $safe_path, " ", join(" ", @safe_args), "\n"
|
print "### safe_path: ", $safe_path, " ", join(" ", @safe_args), "\n"
|
||||||
@ -540,6 +546,13 @@ sub wait_all {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Set global flag to tell all safe_process to exit after starting child
|
||||||
|
#
|
||||||
|
|
||||||
|
sub start_exit {
|
||||||
|
$start_exit= 1;
|
||||||
|
}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check if any process has exited, but don't wait.
|
# Check if any process has exited, but don't wait.
|
||||||
|
@ -598,7 +598,7 @@ sub optimize_cases {
|
|||||||
# Check that engine selected by
|
# Check that engine selected by
|
||||||
# --default-storage-engine=<engine> is supported
|
# --default-storage-engine=<engine> is supported
|
||||||
# =======================================================
|
# =======================================================
|
||||||
my %builtin_engines = ('myisam' => 1, 'memory' => 1);
|
my %builtin_engines = ('myisam' => 1, 'memory' => 1, 'csv' => 1);
|
||||||
|
|
||||||
foreach my $opt ( @{$tinfo->{master_opt}} ) {
|
foreach my $opt ( @{$tinfo->{master_opt}} ) {
|
||||||
my $default_engine=
|
my $default_engine=
|
||||||
|
@ -124,7 +124,7 @@ sub mtr_report_test ($) {
|
|||||||
my $timest = format_time();
|
my $timest = format_time();
|
||||||
my $fail = "fail";
|
my $fail = "fail";
|
||||||
|
|
||||||
if ( $::opt_experimental )
|
if ( @$::experimental_test_cases )
|
||||||
{
|
{
|
||||||
# Find out if this test case is an experimental one, so we can treat
|
# Find out if this test case is an experimental one, so we can treat
|
||||||
# the failure as an expected failure instead of a regression.
|
# the failure as an expected failure instead of a regression.
|
||||||
|
@ -206,8 +206,8 @@ our $opt_client_debugger;
|
|||||||
my $config; # The currently running config
|
my $config; # The currently running config
|
||||||
my $current_config_name; # The currently running config file template
|
my $current_config_name; # The currently running config file template
|
||||||
|
|
||||||
our $opt_experimental;
|
our @opt_experimentals;
|
||||||
our $experimental_test_cases;
|
our $experimental_test_cases= [];
|
||||||
|
|
||||||
my $baseport;
|
my $baseport;
|
||||||
# $opt_build_thread may later be set from $opt_port_base
|
# $opt_build_thread may later be set from $opt_port_base
|
||||||
@ -237,8 +237,10 @@ sub check_timeout { return $opt_testcase_timeout * 6; };
|
|||||||
|
|
||||||
my $opt_start;
|
my $opt_start;
|
||||||
my $opt_start_dirty;
|
my $opt_start_dirty;
|
||||||
|
my $opt_start_exit;
|
||||||
my $start_only;
|
my $start_only;
|
||||||
my $opt_wait_all;
|
my $opt_wait_all;
|
||||||
|
my $opt_user_args;
|
||||||
my $opt_repeat= 1;
|
my $opt_repeat= 1;
|
||||||
my $opt_retry= 3;
|
my $opt_retry= 3;
|
||||||
my $opt_retry_failure= env_or_val(MTR_RETRY_FAILURE => 2);
|
my $opt_retry_failure= env_or_val(MTR_RETRY_FAILURE => 2);
|
||||||
@ -365,6 +367,12 @@ sub main {
|
|||||||
}
|
}
|
||||||
$ENV{MTR_PARALLEL} = $opt_parallel;
|
$ENV{MTR_PARALLEL} = $opt_parallel;
|
||||||
|
|
||||||
|
if ($opt_parallel > 1 && $opt_start_exit) {
|
||||||
|
mtr_warning("Parallel and --start-and-exit cannot be combined\n" .
|
||||||
|
"Setting parallel to 1");
|
||||||
|
$opt_parallel= 1;
|
||||||
|
}
|
||||||
|
|
||||||
# Create server socket on any free port
|
# Create server socket on any free port
|
||||||
my $server = new IO::Socket::INET
|
my $server = new IO::Socket::INET
|
||||||
(
|
(
|
||||||
@ -404,6 +412,8 @@ sub main {
|
|||||||
|
|
||||||
my $completed= run_test_server($server, $tests, $opt_parallel);
|
my $completed= run_test_server($server, $tests, $opt_parallel);
|
||||||
|
|
||||||
|
exit(0) if $opt_start_exit;
|
||||||
|
|
||||||
# Send Ctrl-C to any children still running
|
# Send Ctrl-C to any children still running
|
||||||
kill("INT", keys(%children));
|
kill("INT", keys(%children));
|
||||||
|
|
||||||
@ -857,7 +867,7 @@ sub command_line_setup {
|
|||||||
'big-test' => \$opt_big_test,
|
'big-test' => \$opt_big_test,
|
||||||
'combination=s' => \@opt_combinations,
|
'combination=s' => \@opt_combinations,
|
||||||
'skip-combinations' => \&collect_option,
|
'skip-combinations' => \&collect_option,
|
||||||
'experimental=s' => \$opt_experimental,
|
'experimental=s' => \@opt_experimentals,
|
||||||
'skip-im' => \&ignore_option,
|
'skip-im' => \&ignore_option,
|
||||||
|
|
||||||
# Specify ports
|
# Specify ports
|
||||||
@ -930,7 +940,9 @@ sub command_line_setup {
|
|||||||
'verbose-restart' => \&report_option,
|
'verbose-restart' => \&report_option,
|
||||||
'sleep=i' => \$opt_sleep,
|
'sleep=i' => \$opt_sleep,
|
||||||
'start-dirty' => \$opt_start_dirty,
|
'start-dirty' => \$opt_start_dirty,
|
||||||
|
'start-and-exit' => \$opt_start_exit,
|
||||||
'start' => \$opt_start,
|
'start' => \$opt_start,
|
||||||
|
'user-args' => \$opt_user_args,
|
||||||
'wait-all' => \$opt_wait_all,
|
'wait-all' => \$opt_wait_all,
|
||||||
'print-testcases' => \&collect_option,
|
'print-testcases' => \&collect_option,
|
||||||
'repeat=i' => \$opt_repeat,
|
'repeat=i' => \$opt_repeat,
|
||||||
@ -1044,43 +1056,47 @@ sub command_line_setup {
|
|||||||
mtr_print_thick_line('#');
|
mtr_print_thick_line('#');
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $opt_experimental )
|
if ( @opt_experimentals )
|
||||||
{
|
{
|
||||||
# $^O on Windows considered not generic enough
|
# $^O on Windows considered not generic enough
|
||||||
my $plat= (IS_WINDOWS) ? 'windows' : $^O;
|
my $plat= (IS_WINDOWS) ? 'windows' : $^O;
|
||||||
|
|
||||||
# read the list of experimental test cases from the file specified on
|
# read the list of experimental test cases from the files specified on
|
||||||
# the command line
|
# the command line
|
||||||
open(FILE, "<", $opt_experimental) or mtr_error("Can't read experimental file: $opt_experimental");
|
|
||||||
mtr_report("Using experimental file: $opt_experimental");
|
|
||||||
$experimental_test_cases = [];
|
$experimental_test_cases = [];
|
||||||
while(<FILE>) {
|
foreach my $exp_file (@opt_experimentals)
|
||||||
chomp;
|
{
|
||||||
# remove comments (# foo) at the beginning of the line, or after a
|
open(FILE, "<", $exp_file)
|
||||||
# blank at the end of the line
|
or mtr_error("Can't read experimental file: $exp_file");
|
||||||
s/( +|^)#.*$//;
|
mtr_report("Using experimental file: $exp_file");
|
||||||
# If @ platform specifier given, use this entry only if it contains
|
while(<FILE>) {
|
||||||
# @<platform> or @!<xxx> where xxx != platform
|
chomp;
|
||||||
if (/\@.*/)
|
# remove comments (# foo) at the beginning of the line, or after a
|
||||||
{
|
# blank at the end of the line
|
||||||
next if (/\@!$plat/);
|
s/( +|^)#.*$//;
|
||||||
next unless (/\@$plat/ or /\@!/);
|
# If @ platform specifier given, use this entry only if it contains
|
||||||
# Then remove @ and everything after it
|
# @<platform> or @!<xxx> where xxx != platform
|
||||||
s/\@.*$//;
|
if (/\@.*/)
|
||||||
|
{
|
||||||
|
next if (/\@!$plat/);
|
||||||
|
next unless (/\@$plat/ or /\@!/);
|
||||||
|
# Then remove @ and everything after it
|
||||||
|
s/\@.*$//;
|
||||||
|
}
|
||||||
|
# remove whitespace
|
||||||
|
s/^ +//;
|
||||||
|
s/ +$//;
|
||||||
|
# if nothing left, don't need to remember this line
|
||||||
|
if ( $_ eq "" ) {
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
# remember what is left as the name of another test case that should be
|
||||||
|
# treated as experimental
|
||||||
|
print " - $_\n";
|
||||||
|
push @$experimental_test_cases, $_;
|
||||||
}
|
}
|
||||||
# remove whitespace
|
close FILE;
|
||||||
s/^ +//;
|
|
||||||
s/ +$//;
|
|
||||||
# if nothing left, don't need to remember this line
|
|
||||||
if ( $_ eq "" ) {
|
|
||||||
next;
|
|
||||||
}
|
|
||||||
# remember what is left as the name of another test case that should be
|
|
||||||
# treated as experimental
|
|
||||||
print " - $_\n";
|
|
||||||
push @$experimental_test_cases, $_;
|
|
||||||
}
|
}
|
||||||
close FILE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach my $arg ( @ARGV )
|
foreach my $arg ( @ARGV )
|
||||||
@ -1349,18 +1365,29 @@ sub command_line_setup {
|
|||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Modified behavior with --start options
|
# Modified behavior with --start options
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
if ($opt_start or $opt_start_dirty) {
|
if ($opt_start or $opt_start_dirty or $opt_start_exit) {
|
||||||
collect_option ('quick-collect', 1);
|
collect_option ('quick-collect', 1);
|
||||||
$start_only= 1;
|
$start_only= 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
# Check use of user-args
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
|
||||||
|
if ($opt_user_args) {
|
||||||
|
mtr_error("--user-args only valid with --start options")
|
||||||
|
unless $start_only;
|
||||||
|
mtr_error("--user-args cannot be combined with named suites or tests")
|
||||||
|
if $opt_suites || @opt_cases;
|
||||||
|
}
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
# Check use of wait-all
|
# Check use of wait-all
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
|
|
||||||
if ($opt_wait_all && ! $start_only)
|
if ($opt_wait_all && ! $start_only)
|
||||||
{
|
{
|
||||||
mtr_error("--wait-all can only be used with --start or --start-dirty");
|
mtr_error("--wait-all can only be used with --start options");
|
||||||
}
|
}
|
||||||
|
|
||||||
# --------------------------------------------------------------------------
|
# --------------------------------------------------------------------------
|
||||||
@ -2815,6 +2842,7 @@ sub default_mysqld {
|
|||||||
my $config= My::ConfigFactory->new_config
|
my $config= My::ConfigFactory->new_config
|
||||||
( {
|
( {
|
||||||
basedir => $basedir,
|
basedir => $basedir,
|
||||||
|
testdir => $glob_mysql_test_dir,
|
||||||
template_path => "include/default_my.cnf",
|
template_path => "include/default_my.cnf",
|
||||||
vardir => $opt_vardir,
|
vardir => $opt_vardir,
|
||||||
tmpdir => $opt_tmpdir,
|
tmpdir => $opt_tmpdir,
|
||||||
@ -3060,7 +3088,8 @@ sub check_testcase($$)
|
|||||||
my %started;
|
my %started;
|
||||||
foreach my $mysqld ( mysqlds() )
|
foreach my $mysqld ( mysqlds() )
|
||||||
{
|
{
|
||||||
if ( defined $mysqld->{'proc'} )
|
# Skip if server has been restarted with additional options
|
||||||
|
if ( defined $mysqld->{'proc'} && ! exists $mysqld->{'restart_opts'} )
|
||||||
{
|
{
|
||||||
my $proc= start_check_testcase($tinfo, $mode, $mysqld);
|
my $proc= start_check_testcase($tinfo, $mode, $mysqld);
|
||||||
$started{$proc->pid()}= $proc;
|
$started{$proc->pid()}= $proc;
|
||||||
@ -3421,6 +3450,7 @@ sub run_testcase ($) {
|
|||||||
$config= My::ConfigFactory->new_config
|
$config= My::ConfigFactory->new_config
|
||||||
( {
|
( {
|
||||||
basedir => $basedir,
|
basedir => $basedir,
|
||||||
|
testdir => $glob_mysql_test_dir,
|
||||||
template_path => $tinfo->{template_path},
|
template_path => $tinfo->{template_path},
|
||||||
extra_template_path => $tinfo->{extra_template_path},
|
extra_template_path => $tinfo->{extra_template_path},
|
||||||
vardir => $opt_vardir,
|
vardir => $opt_vardir,
|
||||||
@ -3481,6 +3511,18 @@ sub run_testcase ($) {
|
|||||||
mtr_print ($mysqld->name() . " " . $mysqld->value('port') .
|
mtr_print ($mysqld->name() . " " . $mysqld->value('port') .
|
||||||
" " . $mysqld->value('socket'));
|
" " . $mysqld->value('socket'));
|
||||||
}
|
}
|
||||||
|
if ( $opt_start_exit )
|
||||||
|
{
|
||||||
|
mtr_print("Server(s) started, not waiting for them to finish");
|
||||||
|
if (IS_WINDOWS)
|
||||||
|
{
|
||||||
|
POSIX::_exit(0); # exit hangs here in ActiveState Perl
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
mtr_print("Waiting for server(s) to exit...");
|
mtr_print("Waiting for server(s) to exit...");
|
||||||
if ( $opt_wait_all ) {
|
if ( $opt_wait_all ) {
|
||||||
My::SafeProcess->wait_all();
|
My::SafeProcess->wait_all();
|
||||||
@ -3812,8 +3854,8 @@ sub extract_warning_lines ($$) {
|
|||||||
if ($opt_valgrind_mysqld) {
|
if ($opt_valgrind_mysqld) {
|
||||||
# Skip valgrind summary from tests where server has been restarted
|
# Skip valgrind summary from tests where server has been restarted
|
||||||
# Should this contain memory leaks, the final report will find it
|
# Should this contain memory leaks, the final report will find it
|
||||||
$skip_valgrind= 1 if $line =~ /^==\d+== ERROR SUMMARY:/;
|
# Use a generic pattern for summaries
|
||||||
$skip_valgrind= 1 if $line =~ /^==\d+== HEAP SUMMARY:/;
|
$skip_valgrind= 1 if $line =~ /^==\d+== [A-Z ]+ SUMMARY:/;
|
||||||
$skip_valgrind= 0 unless $line =~ /^==\d+==/;
|
$skip_valgrind= 0 unless $line =~ /^==\d+==/;
|
||||||
next if $skip_valgrind;
|
next if $skip_valgrind;
|
||||||
}
|
}
|
||||||
@ -4021,6 +4063,16 @@ sub check_expected_crash_and_restart {
|
|||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# If last line begins "restart:", the rest of the line is read as
|
||||||
|
# extra command line options to add to the restarted mysqld.
|
||||||
|
# Anything other than 'wait' or 'restart:' (with a colon) will
|
||||||
|
# result in a restart with original mysqld options.
|
||||||
|
if ($last_line =~ /restart:(.+)/) {
|
||||||
|
my @rest_opt= split(' ', $1);
|
||||||
|
$mysqld->{'restart_opts'}= \@rest_opt;
|
||||||
|
} else {
|
||||||
|
delete $mysqld->{'restart_opts'};
|
||||||
|
}
|
||||||
unlink($expect_file);
|
unlink($expect_file);
|
||||||
|
|
||||||
# Start server with same settings as last time
|
# Start server with same settings as last time
|
||||||
@ -4289,7 +4341,7 @@ sub mysqld_arguments ($$$) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( $mysql_version_id >= 50106 )
|
if ( $mysql_version_id >= 50106 && !$opt_user_args)
|
||||||
{
|
{
|
||||||
# Turn on logging to file
|
# Turn on logging to file
|
||||||
mtr_add_arg($args, "--log-output=file");
|
mtr_add_arg($args, "--log-output=file");
|
||||||
@ -4332,7 +4384,7 @@ sub mysqld_arguments ($$$) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$opt_skip_core = $found_skip_core;
|
$opt_skip_core = $found_skip_core;
|
||||||
if ( !$found_skip_core )
|
if ( !$found_skip_core && !$opt_user_args )
|
||||||
{
|
{
|
||||||
mtr_add_arg($args, "%s", "--core-file");
|
mtr_add_arg($args, "%s", "--core-file");
|
||||||
}
|
}
|
||||||
@ -4340,7 +4392,7 @@ sub mysqld_arguments ($$$) {
|
|||||||
# Enable the debug sync facility, set default wait timeout.
|
# Enable the debug sync facility, set default wait timeout.
|
||||||
# Facility stays disabled if timeout value is zero.
|
# Facility stays disabled if timeout value is zero.
|
||||||
mtr_add_arg($args, "--loose-debug-sync-timeout=%s",
|
mtr_add_arg($args, "--loose-debug-sync-timeout=%s",
|
||||||
$opt_debug_sync_timeout);
|
$opt_debug_sync_timeout) unless $opt_user_args;
|
||||||
|
|
||||||
return $args;
|
return $args;
|
||||||
}
|
}
|
||||||
@ -4368,7 +4420,13 @@ sub mysqld_start ($$) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mtr_add_arg($args, "--defaults-group-suffix=%s", $mysqld->after('mysqld'));
|
mtr_add_arg($args, "--defaults-group-suffix=%s", $mysqld->after('mysqld'));
|
||||||
mysqld_arguments($args,$mysqld,$extra_opts);
|
|
||||||
|
# Add any additional options from an in-test restart
|
||||||
|
my @all_opts= @$extra_opts;
|
||||||
|
if (exists $mysqld->{'restart_opts'}) {
|
||||||
|
push (@all_opts, @{$mysqld->{'restart_opts'}});
|
||||||
|
}
|
||||||
|
mysqld_arguments($args,$mysqld,\@all_opts);
|
||||||
|
|
||||||
if ( $opt_debug )
|
if ( $opt_debug )
|
||||||
{
|
{
|
||||||
@ -4549,7 +4607,10 @@ sub server_need_restart {
|
|||||||
my $extra_opts= get_extra_opts($server, $tinfo);
|
my $extra_opts= get_extra_opts($server, $tinfo);
|
||||||
my $started_opts= $server->{'started_opts'};
|
my $started_opts= $server->{'started_opts'};
|
||||||
|
|
||||||
if (!My::Options::same($started_opts, $extra_opts) )
|
# Also, always restart if server had been restarted with additional
|
||||||
|
# options within test.
|
||||||
|
if (!My::Options::same($started_opts, $extra_opts) ||
|
||||||
|
exists $server->{'restart_opts'})
|
||||||
{
|
{
|
||||||
my $use_dynamic_option_switch= 0;
|
my $use_dynamic_option_switch= 0;
|
||||||
if (!$use_dynamic_option_switch)
|
if (!$use_dynamic_option_switch)
|
||||||
@ -4638,6 +4699,9 @@ sub envsubst {
|
|||||||
|
|
||||||
|
|
||||||
sub get_extra_opts {
|
sub get_extra_opts {
|
||||||
|
# No extra options if --user-args
|
||||||
|
return \@opt_extra_mysqld_opt if $opt_user_args;
|
||||||
|
|
||||||
my ($mysqld, $tinfo)= @_;
|
my ($mysqld, $tinfo)= @_;
|
||||||
|
|
||||||
my $opts=
|
my $opts=
|
||||||
@ -4708,6 +4772,12 @@ sub stop_servers($$) {
|
|||||||
sub start_servers($) {
|
sub start_servers($) {
|
||||||
my ($tinfo)= @_;
|
my ($tinfo)= @_;
|
||||||
|
|
||||||
|
# Make sure the safe_process also exits from now on
|
||||||
|
# Could not be done before, as we don't want this for the bootstrap
|
||||||
|
if ($opt_start_exit) {
|
||||||
|
My::SafeProcess->start_exit();
|
||||||
|
}
|
||||||
|
|
||||||
# Start clusters
|
# Start clusters
|
||||||
foreach my $cluster ( clusters() )
|
foreach my $cluster ( clusters() )
|
||||||
{
|
{
|
||||||
@ -5503,8 +5573,13 @@ Misc options
|
|||||||
startup settings for the first specified test case
|
startup settings for the first specified test case
|
||||||
Example:
|
Example:
|
||||||
$0 --start alias &
|
$0 --start alias &
|
||||||
|
start-and-exit Same as --start, but mysql-test-run terminates and
|
||||||
|
leaves just the server running
|
||||||
start-dirty Only start the servers (without initialization) for
|
start-dirty Only start the servers (without initialization) for
|
||||||
the first specified test case
|
the first specified test case
|
||||||
|
user-args In combination with start* and no test name, drops
|
||||||
|
arguments to mysqld except those speficied with
|
||||||
|
--mysqld (if any)
|
||||||
wait-all If --start or --start-dirty option is used, wait for all
|
wait-all If --start or --start-dirty option is used, wait for all
|
||||||
servers to exit before finishing the process
|
servers to exit before finishing the process
|
||||||
fast Run as fast as possible, dont't wait for servers
|
fast Run as fast as possible, dont't wait for servers
|
||||||
|
@ -5138,7 +5138,7 @@ insert t1 values (1),(2),(3),(4),(5);
|
|||||||
truncate table t1;
|
truncate table t1;
|
||||||
affected rows: 0
|
affected rows: 0
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table t1 (v varchar(32) not null);
|
create table t1 (v varchar(32) not null) engine=csv;
|
||||||
insert into t1 values ('def'),('abc'),('hij'),('3r4f');
|
insert into t1 values ('def'),('abc'),('hij'),('3r4f');
|
||||||
select * from t1;
|
select * from t1;
|
||||||
v
|
v
|
||||||
@ -5146,14 +5146,14 @@ def
|
|||||||
abc
|
abc
|
||||||
hij
|
hij
|
||||||
3r4f
|
3r4f
|
||||||
alter table t1 change v v2 varchar(32);
|
alter table t1 change v v2 varchar(32) not null;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
v2
|
v2
|
||||||
def
|
def
|
||||||
abc
|
abc
|
||||||
hij
|
hij
|
||||||
3r4f
|
3r4f
|
||||||
alter table t1 change v2 v varchar(64);
|
alter table t1 change v2 v varchar(64) not null;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
v
|
v
|
||||||
def
|
def
|
||||||
@ -5163,35 +5163,34 @@ hij
|
|||||||
update t1 set v = 'lmn' where v = 'hij';
|
update t1 set v = 'lmn' where v = 'hij';
|
||||||
select * from t1;
|
select * from t1;
|
||||||
v
|
v
|
||||||
|
lmn
|
||||||
def
|
def
|
||||||
abc
|
abc
|
||||||
lmn
|
|
||||||
3r4f
|
3r4f
|
||||||
alter table t1 add i int auto_increment not null primary key first;
|
alter table t1 add i int not null first;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
i v
|
i v
|
||||||
1 def
|
0 lmn
|
||||||
2 abc
|
0 def
|
||||||
3 lmn
|
0 abc
|
||||||
4 3r4f
|
0 3r4f
|
||||||
update t1 set i=5 where i=3;
|
update t1 set i=3 where v = 'abc';
|
||||||
select * from t1;
|
select * from t1;
|
||||||
i v
|
i v
|
||||||
1 def
|
3 abc
|
||||||
2 abc
|
0 lmn
|
||||||
5 lmn
|
0 def
|
||||||
4 3r4f
|
0 3r4f
|
||||||
alter table t1 change i i bigint;
|
alter table t1 change i i bigint not null;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
i v
|
i v
|
||||||
1 def
|
3 abc
|
||||||
2 abc
|
0 lmn
|
||||||
5 lmn
|
0 def
|
||||||
4 3r4f
|
0 3r4f
|
||||||
alter table t1 add unique key (i, v);
|
select * from t1 where i between 2 and 4 and v in ('def','3r4f','abc');
|
||||||
select * from t1 where i between 2 and 4 and v in ('def','3r4f','lmn');
|
|
||||||
i v
|
i v
|
||||||
4 3r4f
|
3 abc
|
||||||
drop table t1;
|
drop table t1;
|
||||||
create table bug15205 (val int(11) not null) engine=csv;
|
create table bug15205 (val int(11) not null) engine=csv;
|
||||||
create table bug15205_2 (val int(11) not null) engine=csv;
|
create table bug15205_2 (val int(11) not null) engine=csv;
|
||||||
|
@ -325,6 +325,7 @@ outer=2 ifval=0
|
|||||||
outer=1 ifval=1
|
outer=1 ifval=1
|
||||||
here is the sourced script
|
here is the sourced script
|
||||||
ERROR 42S02: Table 'test.nowhere' doesn't exist
|
ERROR 42S02: Table 'test.nowhere' doesn't exist
|
||||||
|
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'else' at line 1
|
||||||
|
|
||||||
In loop
|
In loop
|
||||||
here is the sourced script
|
here is the sourced script
|
||||||
@ -392,6 +393,9 @@ true-inner again
|
|||||||
true-outer
|
true-outer
|
||||||
Counter is greater than 0, (counter=10)
|
Counter is greater than 0, (counter=10)
|
||||||
Counter is not 0, (counter=0)
|
Counter is not 0, (counter=0)
|
||||||
|
Counter is true, (counter=alpha)
|
||||||
|
Beta is true
|
||||||
|
while with string, only once
|
||||||
1
|
1
|
||||||
Testing while with not
|
Testing while with not
|
||||||
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest_while.inc": At line 64: Nesting too deeply
|
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest_while.inc": At line 64: Nesting too deeply
|
||||||
@ -446,7 +450,6 @@ OK
|
|||||||
mysqltest: The test didn't produce any output
|
mysqltest: The test didn't produce any output
|
||||||
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 3: connection 'test_con1' not found in connection pool
|
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 3: connection 'test_con1' not found in connection pool
|
||||||
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 2: Connection test_con1 already exists
|
mysqltest: In included file "MYSQLTEST_VARDIR/tmp/mysqltest.sql": At line 2: Connection test_con1 already exists
|
||||||
connect(localhost,root,,test,MASTER_PORT,MASTER_SOCKET);
|
|
||||||
show tables;
|
show tables;
|
||||||
ERROR 3D000: No database selected
|
ERROR 3D000: No database selected
|
||||||
Output from mysqltest-x.inc
|
Output from mysqltest-x.inc
|
||||||
@ -572,7 +575,7 @@ if things work as expected
|
|||||||
Some data
|
Some data
|
||||||
for cat_file command
|
for cat_file command
|
||||||
of mysqltest
|
of mysqltest
|
||||||
mysqltest: At line 1: Failed to open file 'non_existing_file'
|
mysqltest: At line 1: command "cat_file" failed with error 1
|
||||||
mysqltest: At line 1: Missing required argument 'filename' to command 'file_exists'
|
mysqltest: At line 1: Missing required argument 'filename' to command 'file_exists'
|
||||||
mysqltest: At line 1: Missing required argument 'from_file' to command 'copy_file'
|
mysqltest: At line 1: Missing required argument 'from_file' to command 'copy_file'
|
||||||
mysqltest: At line 1: Missing required argument 'to_file' to command 'copy_file'
|
mysqltest: At line 1: Missing required argument 'to_file' to command 'copy_file'
|
||||||
|
@ -78,7 +78,6 @@ grant all on db_storedproc_1.* to 'user_1'@'localhost';
|
|||||||
revoke create routine on db_storedproc_1.* from 'user_1'@'localhost';
|
revoke create routine on db_storedproc_1.* from 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
DROP PROCEDURE IF EXISTS sp1;
|
DROP PROCEDURE IF EXISTS sp1;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
USE db_storedproc_1;
|
USE db_storedproc_1;
|
||||||
@ -91,7 +90,6 @@ USE db_storedproc_1;
|
|||||||
|
|
||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
USE db_storedproc_1;
|
USE db_storedproc_1;
|
||||||
@ -112,7 +110,6 @@ Ensure that root always has the GRANT CREATE ROUTINE privilege.
|
|||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
DROP PROCEDURE IF EXISTS sp3;
|
DROP PROCEDURE IF EXISTS sp3;
|
||||||
@ -149,7 +146,6 @@ CREATE PROCEDURE sp4(v1 char(20))
|
|||||||
BEGIN
|
BEGIN
|
||||||
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
USE db_storedproc_1;
|
USE db_storedproc_1;
|
||||||
@ -191,7 +187,6 @@ grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
|||||||
grant SELECT on db_storedproc_1.* to 'user_2'@'localhost';
|
grant SELECT on db_storedproc_1.* to 'user_2'@'localhost';
|
||||||
grant execute on db_storedproc_1.* to 'user_2'@'localhost';
|
grant execute on db_storedproc_1.* to 'user_2'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
CREATE PROCEDURE sp5_s_i () sql security definer
|
CREATE PROCEDURE sp5_s_i () sql security definer
|
||||||
@ -207,7 +202,6 @@ CREATE PROCEDURE sp5_ins () sql security definer
|
|||||||
BEGIN
|
BEGIN
|
||||||
insert into db_storedproc_1.t3165 values ('inserted', 'from sp5_ins', 1000);
|
insert into db_storedproc_1.t3165 values ('inserted', 'from sp5_ins', 1000);
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp5_s_i();
|
CALL sp5_s_i();
|
||||||
@ -305,7 +299,6 @@ GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
|||||||
GRANT SELECT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
GRANT SELECT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||||
GRANT EXECUTE ON db_storedproc_1.* TO 'user_2'@'localhost';
|
GRANT EXECUTE ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
CREATE PROCEDURE sp3166_s_i () SQL SECURITY INVOKER
|
CREATE PROCEDURE sp3166_s_i () SQL SECURITY INVOKER
|
||||||
@ -321,7 +314,6 @@ CREATE PROCEDURE sp3166_ins () SQL SECURITY INVOKER
|
|||||||
BEGIN
|
BEGIN
|
||||||
insert into db_storedproc_1.t3166 values ('inserted from sp3166_ins');
|
insert into db_storedproc_1.t3166 values ('inserted from sp3166_ins');
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
@ -340,7 +332,6 @@ c1
|
|||||||
inserted outside SP
|
inserted outside SP
|
||||||
GRANT INSERT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
GRANT INSERT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
@ -361,7 +352,6 @@ inserted from sp3166_s_i
|
|||||||
inserted from sp3166_ins
|
inserted from sp3166_ins
|
||||||
REVOKE SELECT ON db_storedproc_1.* FROM 'user_2'@'localhost';
|
REVOKE SELECT ON db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
@ -379,7 +369,6 @@ inserted from sp3166_ins
|
|||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
REVOKE EXECUTE on db_storedproc_1.* FROM 'user_2'@'localhost';
|
REVOKE EXECUTE on db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
|
@ -81,7 +81,6 @@ create user 'user_2'@'localhost';
|
|||||||
GRANT CREATE ROUTINE ON db_storedproc.* TO 'user_1'@'localhost';
|
GRANT CREATE ROUTINE ON db_storedproc.* TO 'user_1'@'localhost';
|
||||||
GRANT SELECT ON db_storedproc.* TO 'user_2'@'localhost';
|
GRANT SELECT ON db_storedproc.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_1,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc
|
user_1@localhost db_storedproc
|
||||||
CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER
|
CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER
|
||||||
@ -94,7 +93,6 @@ DECLARE res INT;
|
|||||||
SET res = n * n;
|
SET res = n * n;
|
||||||
RETURN res;
|
RETURN res;
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_2,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc
|
user_2@localhost db_storedproc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
@ -113,7 +111,6 @@ fn31105( 9 )
|
|||||||
81
|
81
|
||||||
GRANT EXECUTE ON db_storedproc.* TO 'user_2'@'localhost';
|
GRANT EXECUTE ON db_storedproc.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc
|
user_2@localhost db_storedproc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
@ -134,7 +131,6 @@ a` a` 1000-01-01 -5000 a` -5000
|
|||||||
SELECT fn31105( 9 );
|
SELECT fn31105( 9 );
|
||||||
fn31105( 9 )
|
fn31105( 9 )
|
||||||
81
|
81
|
||||||
connect(localhost,user_2,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc
|
user_2@localhost db_storedproc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
|
@ -85,8 +85,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
Testcase 3.5.3.2:
|
Testcase 3.5.3.2:
|
||||||
-----------------
|
-----------------
|
||||||
@ -161,8 +159,6 @@ grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
|
|||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT UPDATE, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT UPDATE, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
@ -222,8 +218,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -296,8 +290,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -351,8 +343,6 @@ grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost;
|
|||||||
show grants for test_noprivs;
|
show grants for test_noprivs;
|
||||||
Grants for test_noprivs@%
|
Grants for test_noprivs@%
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -407,8 +397,6 @@ grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
|
|||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT SELECT, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT SELECT, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
@ -464,8 +452,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -519,8 +505,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -565,8 +549,6 @@ show grants for test_noprivs@localhost;
|
|||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -611,7 +593,6 @@ Grants for test_yesprivs@localhost
|
|||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.`t2` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.`t2` TO 'test_yesprivs'@'localhost'
|
||||||
GRANT SELECT, UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT, UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
|
@ -24,7 +24,6 @@ show grants for test_noprivs@localhost;
|
|||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, INSERT ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, INSERT ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
no trigger privilege on db level for create:
|
no trigger privilege on db level for create:
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
@ -32,7 +31,6 @@ use priv_db;
|
|||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
@ -253,8 +251,6 @@ revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
|||||||
create User test_noprivs@localhost;
|
create User test_noprivs@localhost;
|
||||||
set password for test_noprivs@localhost = password('PWD');
|
set password for test_noprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
no trigger privilege on table level for create:
|
no trigger privilege on table level for create:
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
@ -513,8 +509,6 @@ grant SELECT,INSERT on *.* to test_noprivs@localhost;
|
|||||||
show grants for test_noprivs@localhost;
|
show grants for test_noprivs@localhost;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT SELECT, INSERT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT SELECT, INSERT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
@ -563,7 +557,6 @@ revoke TRIGGER on *.* from test_yesprivs@localhost;
|
|||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
@ -698,7 +691,6 @@ select f1 from t1 order by f1;
|
|||||||
f1
|
f1
|
||||||
insert-yes
|
insert-yes
|
||||||
insert-yes
|
insert-yes
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
@ -767,9 +759,7 @@ Grants for test_noprivs@localhost
|
|||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, INSERT, UPDATE ON `priv1_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, INSERT, UPDATE ON `priv1_db`.* TO 'test_noprivs'@'localhost'
|
||||||
GRANT SELECT, INSERT ON `priv2_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, INSERT ON `priv2_db`.* TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
use priv1_db;
|
use priv1_db;
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
use priv1_db;
|
use priv1_db;
|
||||||
|
|
||||||
trigger privilege on one db1 db level, not on db2
|
trigger privilege on one db1 db level, not on db2
|
||||||
@ -982,7 +972,6 @@ create User test_useprivs@localhost;
|
|||||||
set password for test_useprivs@localhost = password('PWD');
|
set password for test_useprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_useprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_useprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
root@localhost
|
root@localhost
|
||||||
@ -1010,7 +999,6 @@ select f1 from t1 order by f1;
|
|||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
prepare ins1 from 'insert into t1 (f1) values (''insert2-no'')';
|
prepare ins1 from 'insert into t1 (f1) values (''insert2-no'')';
|
||||||
connect(localhost,test_useprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_useprivs@localhost
|
test_useprivs@localhost
|
||||||
@ -1206,7 +1194,6 @@ create table t1 (f1 char(20)) engine= innodb;
|
|||||||
create User test_yesprivs@localhost;
|
create User test_yesprivs@localhost;
|
||||||
set password for test_yesprivs@localhost = password('PWD');
|
set password for test_yesprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
root@localhost
|
root@localhost
|
||||||
@ -1303,7 +1290,6 @@ create table t1 (f1 char(20)) engine= innodb;
|
|||||||
create User test_yesprivs@localhost;
|
create User test_yesprivs@localhost;
|
||||||
set password for test_yesprivs@localhost = password('PWD');
|
set password for test_yesprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
root@localhost
|
root@localhost
|
||||||
@ -1375,8 +1361,6 @@ show grants for test_noprivs@localhost;
|
|||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, UPDATE ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, UPDATE ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
update only on column:
|
update only on column:
|
||||||
----------------------
|
----------------------
|
||||||
|
@ -67,8 +67,6 @@ revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
|
|||||||
create User test_super@localhost;
|
create User test_super@localhost;
|
||||||
set password for test_super@localhost = password('PWD');
|
set password for test_super@localhost = password('PWD');
|
||||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||||
connect(localhost,test_general,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_super,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
Testcase 3.5.4:
|
Testcase 3.5.4:
|
||||||
---------------
|
---------------
|
||||||
|
@ -67,8 +67,6 @@ revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
|
|||||||
create User test_super@localhost;
|
create User test_super@localhost;
|
||||||
set password for test_super@localhost = password('PWD');
|
set password for test_super@localhost = password('PWD');
|
||||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||||
connect(localhost,test_general,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_super,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
Testcase 3.5.8.1: (implied in previous tests)
|
Testcase 3.5.8.1: (implied in previous tests)
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
@ -79,7 +79,6 @@ grant all on db_storedproc_1.* to 'user_1'@'localhost';
|
|||||||
revoke create routine on db_storedproc_1.* from 'user_1'@'localhost';
|
revoke create routine on db_storedproc_1.* from 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
DROP PROCEDURE IF EXISTS sp1;
|
DROP PROCEDURE IF EXISTS sp1;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
USE db_storedproc_1;
|
USE db_storedproc_1;
|
||||||
@ -92,7 +91,6 @@ USE db_storedproc_1;
|
|||||||
|
|
||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
USE db_storedproc_1;
|
USE db_storedproc_1;
|
||||||
@ -113,7 +111,6 @@ Ensure that root always has the GRANT CREATE ROUTINE privilege.
|
|||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
DROP PROCEDURE IF EXISTS sp3;
|
DROP PROCEDURE IF EXISTS sp3;
|
||||||
@ -150,7 +147,6 @@ CREATE PROCEDURE sp4(v1 char(20))
|
|||||||
BEGIN
|
BEGIN
|
||||||
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
USE db_storedproc_1;
|
USE db_storedproc_1;
|
||||||
@ -192,7 +188,6 @@ grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
|||||||
grant SELECT on db_storedproc_1.* to 'user_2'@'localhost';
|
grant SELECT on db_storedproc_1.* to 'user_2'@'localhost';
|
||||||
grant execute on db_storedproc_1.* to 'user_2'@'localhost';
|
grant execute on db_storedproc_1.* to 'user_2'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
CREATE PROCEDURE sp5_s_i () sql security definer
|
CREATE PROCEDURE sp5_s_i () sql security definer
|
||||||
@ -208,7 +203,6 @@ CREATE PROCEDURE sp5_ins () sql security definer
|
|||||||
BEGIN
|
BEGIN
|
||||||
insert into db_storedproc_1.t3165 values ('inserted', 'from sp5_ins', 1000);
|
insert into db_storedproc_1.t3165 values ('inserted', 'from sp5_ins', 1000);
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp5_s_i();
|
CALL sp5_s_i();
|
||||||
@ -306,7 +300,6 @@ GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
|||||||
GRANT SELECT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
GRANT SELECT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||||
GRANT EXECUTE ON db_storedproc_1.* TO 'user_2'@'localhost';
|
GRANT EXECUTE ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
CREATE PROCEDURE sp3166_s_i () SQL SECURITY INVOKER
|
CREATE PROCEDURE sp3166_s_i () SQL SECURITY INVOKER
|
||||||
@ -322,7 +315,6 @@ CREATE PROCEDURE sp3166_ins () SQL SECURITY INVOKER
|
|||||||
BEGIN
|
BEGIN
|
||||||
insert into db_storedproc_1.t3166 values ('inserted from sp3166_ins');
|
insert into db_storedproc_1.t3166 values ('inserted from sp3166_ins');
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
@ -341,7 +333,6 @@ c1
|
|||||||
inserted outside SP
|
inserted outside SP
|
||||||
GRANT INSERT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
GRANT INSERT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
@ -362,7 +353,6 @@ inserted from sp3166_s_i
|
|||||||
inserted from sp3166_ins
|
inserted from sp3166_ins
|
||||||
REVOKE SELECT ON db_storedproc_1.* FROM 'user_2'@'localhost';
|
REVOKE SELECT ON db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
@ -380,7 +370,6 @@ inserted from sp3166_ins
|
|||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
REVOKE EXECUTE on db_storedproc_1.* FROM 'user_2'@'localhost';
|
REVOKE EXECUTE on db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
|
@ -82,7 +82,6 @@ create user 'user_2'@'localhost';
|
|||||||
GRANT CREATE ROUTINE ON db_storedproc.* TO 'user_1'@'localhost';
|
GRANT CREATE ROUTINE ON db_storedproc.* TO 'user_1'@'localhost';
|
||||||
GRANT SELECT ON db_storedproc.* TO 'user_2'@'localhost';
|
GRANT SELECT ON db_storedproc.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_1,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc
|
user_1@localhost db_storedproc
|
||||||
CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER
|
CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER
|
||||||
@ -95,7 +94,6 @@ DECLARE res INT;
|
|||||||
SET res = n * n;
|
SET res = n * n;
|
||||||
RETURN res;
|
RETURN res;
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_2,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc
|
user_2@localhost db_storedproc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
@ -114,7 +112,6 @@ fn31105( 9 )
|
|||||||
81
|
81
|
||||||
GRANT EXECUTE ON db_storedproc.* TO 'user_2'@'localhost';
|
GRANT EXECUTE ON db_storedproc.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc
|
user_2@localhost db_storedproc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
@ -135,7 +132,6 @@ a` a` 1000-01-01 -5000 a` -5000
|
|||||||
SELECT fn31105( 9 );
|
SELECT fn31105( 9 );
|
||||||
fn31105( 9 )
|
fn31105( 9 )
|
||||||
81
|
81
|
||||||
connect(localhost,user_2,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc
|
user_2@localhost db_storedproc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
|
@ -86,8 +86,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
Testcase 3.5.3.2:
|
Testcase 3.5.3.2:
|
||||||
-----------------
|
-----------------
|
||||||
@ -162,8 +160,6 @@ grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
|
|||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT UPDATE, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT UPDATE, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
@ -223,8 +219,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -297,8 +291,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -352,8 +344,6 @@ grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost;
|
|||||||
show grants for test_noprivs;
|
show grants for test_noprivs;
|
||||||
Grants for test_noprivs@%
|
Grants for test_noprivs@%
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -408,8 +398,6 @@ grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
|
|||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT SELECT, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT SELECT, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
@ -465,8 +453,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -520,8 +506,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -566,8 +550,6 @@ show grants for test_noprivs@localhost;
|
|||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -612,7 +594,6 @@ Grants for test_yesprivs@localhost
|
|||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.`t2` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.`t2` TO 'test_yesprivs'@'localhost'
|
||||||
GRANT SELECT, UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT, UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
|
@ -25,7 +25,6 @@ show grants for test_noprivs@localhost;
|
|||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, INSERT ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, INSERT ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
no trigger privilege on db level for create:
|
no trigger privilege on db level for create:
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
@ -33,7 +32,6 @@ use priv_db;
|
|||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
@ -254,8 +252,6 @@ revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
|||||||
create User test_noprivs@localhost;
|
create User test_noprivs@localhost;
|
||||||
set password for test_noprivs@localhost = password('PWD');
|
set password for test_noprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
no trigger privilege on table level for create:
|
no trigger privilege on table level for create:
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
@ -514,8 +510,6 @@ grant SELECT,INSERT on *.* to test_noprivs@localhost;
|
|||||||
show grants for test_noprivs@localhost;
|
show grants for test_noprivs@localhost;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT SELECT, INSERT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT SELECT, INSERT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
@ -564,7 +558,6 @@ revoke TRIGGER on *.* from test_yesprivs@localhost;
|
|||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
@ -699,7 +692,6 @@ select f1 from t1 order by f1;
|
|||||||
f1
|
f1
|
||||||
insert-yes
|
insert-yes
|
||||||
insert-yes
|
insert-yes
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
@ -768,9 +760,7 @@ Grants for test_noprivs@localhost
|
|||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, INSERT, UPDATE ON `priv1_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, INSERT, UPDATE ON `priv1_db`.* TO 'test_noprivs'@'localhost'
|
||||||
GRANT SELECT, INSERT ON `priv2_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, INSERT ON `priv2_db`.* TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
use priv1_db;
|
use priv1_db;
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
use priv1_db;
|
use priv1_db;
|
||||||
|
|
||||||
trigger privilege on one db1 db level, not on db2
|
trigger privilege on one db1 db level, not on db2
|
||||||
@ -983,7 +973,6 @@ create User test_useprivs@localhost;
|
|||||||
set password for test_useprivs@localhost = password('PWD');
|
set password for test_useprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_useprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_useprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
root@localhost
|
root@localhost
|
||||||
@ -1011,7 +1000,6 @@ select f1 from t1 order by f1;
|
|||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
prepare ins1 from 'insert into t1 (f1) values (''insert2-no'')';
|
prepare ins1 from 'insert into t1 (f1) values (''insert2-no'')';
|
||||||
connect(localhost,test_useprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_useprivs@localhost
|
test_useprivs@localhost
|
||||||
@ -1207,7 +1195,6 @@ create table t1 (f1 char(20)) engine= memory;
|
|||||||
create User test_yesprivs@localhost;
|
create User test_yesprivs@localhost;
|
||||||
set password for test_yesprivs@localhost = password('PWD');
|
set password for test_yesprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
root@localhost
|
root@localhost
|
||||||
@ -1319,8 +1306,6 @@ show grants for test_noprivs@localhost;
|
|||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, UPDATE ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, UPDATE ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
update only on column:
|
update only on column:
|
||||||
----------------------
|
----------------------
|
||||||
|
@ -68,8 +68,6 @@ revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
|
|||||||
create User test_super@localhost;
|
create User test_super@localhost;
|
||||||
set password for test_super@localhost = password('PWD');
|
set password for test_super@localhost = password('PWD');
|
||||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||||
connect(localhost,test_general,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_super,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
Testcase 3.5.4:
|
Testcase 3.5.4:
|
||||||
---------------
|
---------------
|
||||||
|
@ -68,8 +68,6 @@ revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
|
|||||||
create User test_super@localhost;
|
create User test_super@localhost;
|
||||||
set password for test_super@localhost = password('PWD');
|
set password for test_super@localhost = password('PWD');
|
||||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||||
connect(localhost,test_general,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_super,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
Testcase 3.5.8.1: (implied in previous tests)
|
Testcase 3.5.8.1: (implied in previous tests)
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
@ -79,7 +79,6 @@ grant all on db_storedproc_1.* to 'user_1'@'localhost';
|
|||||||
revoke create routine on db_storedproc_1.* from 'user_1'@'localhost';
|
revoke create routine on db_storedproc_1.* from 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
DROP PROCEDURE IF EXISTS sp1;
|
DROP PROCEDURE IF EXISTS sp1;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
USE db_storedproc_1;
|
USE db_storedproc_1;
|
||||||
@ -92,7 +91,6 @@ USE db_storedproc_1;
|
|||||||
|
|
||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
USE db_storedproc_1;
|
USE db_storedproc_1;
|
||||||
@ -113,7 +111,6 @@ Ensure that root always has the GRANT CREATE ROUTINE privilege.
|
|||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
DROP PROCEDURE IF EXISTS sp3;
|
DROP PROCEDURE IF EXISTS sp3;
|
||||||
@ -150,7 +147,6 @@ CREATE PROCEDURE sp4(v1 char(20))
|
|||||||
BEGIN
|
BEGIN
|
||||||
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
USE db_storedproc_1;
|
USE db_storedproc_1;
|
||||||
@ -192,7 +188,6 @@ grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
|||||||
grant SELECT on db_storedproc_1.* to 'user_2'@'localhost';
|
grant SELECT on db_storedproc_1.* to 'user_2'@'localhost';
|
||||||
grant execute on db_storedproc_1.* to 'user_2'@'localhost';
|
grant execute on db_storedproc_1.* to 'user_2'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
CREATE PROCEDURE sp5_s_i () sql security definer
|
CREATE PROCEDURE sp5_s_i () sql security definer
|
||||||
@ -208,7 +203,6 @@ CREATE PROCEDURE sp5_ins () sql security definer
|
|||||||
BEGIN
|
BEGIN
|
||||||
insert into db_storedproc_1.t3165 values ('inserted', 'from sp5_ins', 1000);
|
insert into db_storedproc_1.t3165 values ('inserted', 'from sp5_ins', 1000);
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp5_s_i();
|
CALL sp5_s_i();
|
||||||
@ -306,7 +300,6 @@ GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
|||||||
GRANT SELECT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
GRANT SELECT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||||
GRANT EXECUTE ON db_storedproc_1.* TO 'user_2'@'localhost';
|
GRANT EXECUTE ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
CREATE PROCEDURE sp3166_s_i () SQL SECURITY INVOKER
|
CREATE PROCEDURE sp3166_s_i () SQL SECURITY INVOKER
|
||||||
@ -322,7 +315,6 @@ CREATE PROCEDURE sp3166_ins () SQL SECURITY INVOKER
|
|||||||
BEGIN
|
BEGIN
|
||||||
insert into db_storedproc_1.t3166 values ('inserted from sp3166_ins');
|
insert into db_storedproc_1.t3166 values ('inserted from sp3166_ins');
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
@ -341,7 +333,6 @@ c1
|
|||||||
inserted outside SP
|
inserted outside SP
|
||||||
GRANT INSERT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
GRANT INSERT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
@ -362,7 +353,6 @@ inserted from sp3166_s_i
|
|||||||
inserted from sp3166_ins
|
inserted from sp3166_ins
|
||||||
REVOKE SELECT ON db_storedproc_1.* FROM 'user_2'@'localhost';
|
REVOKE SELECT ON db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
@ -380,7 +370,6 @@ inserted from sp3166_ins
|
|||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
REVOKE EXECUTE on db_storedproc_1.* FROM 'user_2'@'localhost';
|
REVOKE EXECUTE on db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
|
@ -82,7 +82,6 @@ create user 'user_2'@'localhost';
|
|||||||
GRANT CREATE ROUTINE ON db_storedproc.* TO 'user_1'@'localhost';
|
GRANT CREATE ROUTINE ON db_storedproc.* TO 'user_1'@'localhost';
|
||||||
GRANT SELECT ON db_storedproc.* TO 'user_2'@'localhost';
|
GRANT SELECT ON db_storedproc.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_1,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc
|
user_1@localhost db_storedproc
|
||||||
CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER
|
CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER
|
||||||
@ -95,7 +94,6 @@ DECLARE res INT;
|
|||||||
SET res = n * n;
|
SET res = n * n;
|
||||||
RETURN res;
|
RETURN res;
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_2,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc
|
user_2@localhost db_storedproc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
@ -114,7 +112,6 @@ fn31105( 9 )
|
|||||||
81
|
81
|
||||||
GRANT EXECUTE ON db_storedproc.* TO 'user_2'@'localhost';
|
GRANT EXECUTE ON db_storedproc.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc
|
user_2@localhost db_storedproc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
@ -135,7 +132,6 @@ a` a` 1000-01-01 -5000 a` -5000
|
|||||||
SELECT fn31105( 9 );
|
SELECT fn31105( 9 );
|
||||||
fn31105( 9 )
|
fn31105( 9 )
|
||||||
81
|
81
|
||||||
connect(localhost,user_2,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc
|
user_2@localhost db_storedproc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
|
@ -86,8 +86,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
Testcase 3.5.3.2:
|
Testcase 3.5.3.2:
|
||||||
-----------------
|
-----------------
|
||||||
@ -162,8 +160,6 @@ grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
|
|||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT UPDATE, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT UPDATE, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
@ -223,8 +219,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -297,8 +291,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -352,8 +344,6 @@ grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost;
|
|||||||
show grants for test_noprivs;
|
show grants for test_noprivs;
|
||||||
Grants for test_noprivs@%
|
Grants for test_noprivs@%
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -408,8 +398,6 @@ grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
|
|||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT SELECT, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT SELECT, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
@ -465,8 +453,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -520,8 +506,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -566,8 +550,6 @@ show grants for test_noprivs@localhost;
|
|||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -612,7 +594,6 @@ Grants for test_yesprivs@localhost
|
|||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.`t2` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.`t2` TO 'test_yesprivs'@'localhost'
|
||||||
GRANT SELECT, UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT, UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
|
@ -25,7 +25,6 @@ show grants for test_noprivs@localhost;
|
|||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, INSERT ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, INSERT ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
no trigger privilege on db level for create:
|
no trigger privilege on db level for create:
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
@ -33,7 +32,6 @@ use priv_db;
|
|||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
@ -254,8 +252,6 @@ revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
|||||||
create User test_noprivs@localhost;
|
create User test_noprivs@localhost;
|
||||||
set password for test_noprivs@localhost = password('PWD');
|
set password for test_noprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
no trigger privilege on table level for create:
|
no trigger privilege on table level for create:
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
@ -514,8 +510,6 @@ grant SELECT,INSERT on *.* to test_noprivs@localhost;
|
|||||||
show grants for test_noprivs@localhost;
|
show grants for test_noprivs@localhost;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT SELECT, INSERT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT SELECT, INSERT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
@ -564,7 +558,6 @@ revoke TRIGGER on *.* from test_yesprivs@localhost;
|
|||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
@ -699,7 +692,6 @@ select f1 from t1 order by f1;
|
|||||||
f1
|
f1
|
||||||
insert-yes
|
insert-yes
|
||||||
insert-yes
|
insert-yes
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
@ -768,9 +760,7 @@ Grants for test_noprivs@localhost
|
|||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, INSERT, UPDATE ON `priv1_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, INSERT, UPDATE ON `priv1_db`.* TO 'test_noprivs'@'localhost'
|
||||||
GRANT SELECT, INSERT ON `priv2_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, INSERT ON `priv2_db`.* TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
use priv1_db;
|
use priv1_db;
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
use priv1_db;
|
use priv1_db;
|
||||||
|
|
||||||
trigger privilege on one db1 db level, not on db2
|
trigger privilege on one db1 db level, not on db2
|
||||||
@ -983,7 +973,6 @@ create User test_useprivs@localhost;
|
|||||||
set password for test_useprivs@localhost = password('PWD');
|
set password for test_useprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_useprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_useprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
root@localhost
|
root@localhost
|
||||||
@ -1011,7 +1000,6 @@ select f1 from t1 order by f1;
|
|||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
prepare ins1 from 'insert into t1 (f1) values (''insert2-no'')';
|
prepare ins1 from 'insert into t1 (f1) values (''insert2-no'')';
|
||||||
connect(localhost,test_useprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_useprivs@localhost
|
test_useprivs@localhost
|
||||||
@ -1207,7 +1195,6 @@ create table t1 (f1 char(20)) engine= myisam;
|
|||||||
create User test_yesprivs@localhost;
|
create User test_yesprivs@localhost;
|
||||||
set password for test_yesprivs@localhost = password('PWD');
|
set password for test_yesprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
root@localhost
|
root@localhost
|
||||||
@ -1319,8 +1306,6 @@ show grants for test_noprivs@localhost;
|
|||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, UPDATE ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, UPDATE ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
update only on column:
|
update only on column:
|
||||||
----------------------
|
----------------------
|
||||||
|
@ -68,8 +68,6 @@ revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
|
|||||||
create User test_super@localhost;
|
create User test_super@localhost;
|
||||||
set password for test_super@localhost = password('PWD');
|
set password for test_super@localhost = password('PWD');
|
||||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||||
connect(localhost,test_general,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_super,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
Testcase 3.5.4:
|
Testcase 3.5.4:
|
||||||
---------------
|
---------------
|
||||||
|
@ -68,8 +68,6 @@ revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
|
|||||||
create User test_super@localhost;
|
create User test_super@localhost;
|
||||||
set password for test_super@localhost = password('PWD');
|
set password for test_super@localhost = password('PWD');
|
||||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||||
connect(localhost,test_general,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_super,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
Testcase 3.5.8.1: (implied in previous tests)
|
Testcase 3.5.8.1: (implied in previous tests)
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
@ -78,7 +78,6 @@ grant all on db_storedproc_1.* to 'user_1'@'localhost';
|
|||||||
revoke create routine on db_storedproc_1.* from 'user_1'@'localhost';
|
revoke create routine on db_storedproc_1.* from 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
DROP PROCEDURE IF EXISTS sp1;
|
DROP PROCEDURE IF EXISTS sp1;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
USE db_storedproc_1;
|
USE db_storedproc_1;
|
||||||
@ -91,7 +90,6 @@ USE db_storedproc_1;
|
|||||||
|
|
||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
USE db_storedproc_1;
|
USE db_storedproc_1;
|
||||||
@ -112,7 +110,6 @@ Ensure that root always has the GRANT CREATE ROUTINE privilege.
|
|||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
DROP PROCEDURE IF EXISTS sp3;
|
DROP PROCEDURE IF EXISTS sp3;
|
||||||
@ -149,7 +146,6 @@ CREATE PROCEDURE sp4(v1 char(20))
|
|||||||
BEGIN
|
BEGIN
|
||||||
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
SELECT * from db_storedproc_1.t6 where t6.f2= 'xyz';
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
USE db_storedproc_1;
|
USE db_storedproc_1;
|
||||||
@ -191,7 +187,6 @@ grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
|||||||
grant SELECT on db_storedproc_1.* to 'user_2'@'localhost';
|
grant SELECT on db_storedproc_1.* to 'user_2'@'localhost';
|
||||||
grant execute on db_storedproc_1.* to 'user_2'@'localhost';
|
grant execute on db_storedproc_1.* to 'user_2'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
CREATE PROCEDURE sp5_s_i () sql security definer
|
CREATE PROCEDURE sp5_s_i () sql security definer
|
||||||
@ -207,7 +202,6 @@ CREATE PROCEDURE sp5_ins () sql security definer
|
|||||||
BEGIN
|
BEGIN
|
||||||
insert into db_storedproc_1.t3165 values ('inserted', 'from sp5_ins', 1000);
|
insert into db_storedproc_1.t3165 values ('inserted', 'from sp5_ins', 1000);
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp5_s_i();
|
CALL sp5_s_i();
|
||||||
@ -305,7 +299,6 @@ GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
|||||||
GRANT SELECT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
GRANT SELECT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||||
GRANT EXECUTE ON db_storedproc_1.* TO 'user_2'@'localhost';
|
GRANT EXECUTE ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_1,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc_1
|
user_1@localhost db_storedproc_1
|
||||||
CREATE PROCEDURE sp3166_s_i () SQL SECURITY INVOKER
|
CREATE PROCEDURE sp3166_s_i () SQL SECURITY INVOKER
|
||||||
@ -321,7 +314,6 @@ CREATE PROCEDURE sp3166_ins () SQL SECURITY INVOKER
|
|||||||
BEGIN
|
BEGIN
|
||||||
insert into db_storedproc_1.t3166 values ('inserted from sp3166_ins');
|
insert into db_storedproc_1.t3166 values ('inserted from sp3166_ins');
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
@ -340,7 +332,6 @@ c1
|
|||||||
inserted outside SP
|
inserted outside SP
|
||||||
GRANT INSERT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
GRANT INSERT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
@ -361,7 +352,6 @@ inserted from sp3166_s_i
|
|||||||
inserted from sp3166_ins
|
inserted from sp3166_ins
|
||||||
REVOKE SELECT ON db_storedproc_1.* FROM 'user_2'@'localhost';
|
REVOKE SELECT ON db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
@ -379,7 +369,6 @@ inserted from sp3166_ins
|
|||||||
root@localhost db_storedproc_1
|
root@localhost db_storedproc_1
|
||||||
REVOKE EXECUTE on db_storedproc_1.* FROM 'user_2'@'localhost';
|
REVOKE EXECUTE on db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc_1,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc_1
|
user_2@localhost db_storedproc_1
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
|
@ -81,7 +81,6 @@ create user 'user_2'@'localhost';
|
|||||||
GRANT CREATE ROUTINE ON db_storedproc.* TO 'user_1'@'localhost';
|
GRANT CREATE ROUTINE ON db_storedproc.* TO 'user_1'@'localhost';
|
||||||
GRANT SELECT ON db_storedproc.* TO 'user_2'@'localhost';
|
GRANT SELECT ON db_storedproc.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_1,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc
|
user_1@localhost db_storedproc
|
||||||
CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER
|
CREATE PROCEDURE sp31102 () SQL SECURITY INVOKER
|
||||||
@ -94,7 +93,6 @@ DECLARE res INT;
|
|||||||
SET res = n * n;
|
SET res = n * n;
|
||||||
RETURN res;
|
RETURN res;
|
||||||
END//
|
END//
|
||||||
connect(localhost,user_2,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc
|
user_2@localhost db_storedproc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
@ -113,7 +111,6 @@ fn31105( 9 )
|
|||||||
81
|
81
|
||||||
GRANT EXECUTE ON db_storedproc.* TO 'user_2'@'localhost';
|
GRANT EXECUTE ON db_storedproc.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
connect(localhost,user_2,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc
|
user_2@localhost db_storedproc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
@ -134,7 +131,6 @@ a` a` 1000-01-01 -5000 a` -5000
|
|||||||
SELECT fn31105( 9 );
|
SELECT fn31105( 9 );
|
||||||
fn31105( 9 )
|
fn31105( 9 )
|
||||||
81
|
81
|
||||||
connect(localhost,user_2,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_2@localhost db_storedproc
|
user_2@localhost db_storedproc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
|
@ -85,8 +85,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
Testcase 3.5.3.2:
|
Testcase 3.5.3.2:
|
||||||
-----------------
|
-----------------
|
||||||
@ -161,8 +159,6 @@ grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
|
|||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT UPDATE, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT UPDATE, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
@ -222,8 +218,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
GRANT UPDATE ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -296,8 +290,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -351,8 +343,6 @@ grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost;
|
|||||||
show grants for test_noprivs;
|
show grants for test_noprivs;
|
||||||
Grants for test_noprivs@%
|
Grants for test_noprivs@%
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'%'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -407,8 +397,6 @@ grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
|
|||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT SELECT, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT SELECT, TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_noprivs@localhost
|
test_noprivs@localhost
|
||||||
@ -464,8 +452,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.* TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -519,8 +505,6 @@ show grants for test_yesprivs@localhost;
|
|||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -565,8 +549,6 @@ show grants for test_noprivs@localhost;
|
|||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
GRANT INSERT (f1), UPDATE (f1) ON `priv_db`.`t1` TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
show grants;
|
show grants;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
@ -611,7 +593,6 @@ Grants for test_yesprivs@localhost
|
|||||||
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT TRIGGER ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT ON `priv_db`.`t2` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT ON `priv_db`.`t2` TO 'test_yesprivs'@'localhost'
|
||||||
GRANT SELECT, UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
GRANT SELECT, UPDATE ON `priv_db`.`t1` TO 'test_yesprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
|
@ -24,7 +24,6 @@ show grants for test_noprivs@localhost;
|
|||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, INSERT ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, INSERT ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
no trigger privilege on db level for create:
|
no trigger privilege on db level for create:
|
||||||
--------------------------------------------
|
--------------------------------------------
|
||||||
@ -32,7 +31,6 @@ use priv_db;
|
|||||||
create trigger trg1_1 before INSERT on t1 for each row
|
create trigger trg1_1 before INSERT on t1 for each row
|
||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
ERROR 42000: TRIGGER command denied to user 'test_yesprivs'@'localhost' for table 't1'
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
@ -253,8 +251,6 @@ revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
|||||||
create User test_noprivs@localhost;
|
create User test_noprivs@localhost;
|
||||||
set password for test_noprivs@localhost = password('PWD');
|
set password for test_noprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
no trigger privilege on table level for create:
|
no trigger privilege on table level for create:
|
||||||
-----------------------------------------------
|
-----------------------------------------------
|
||||||
@ -513,8 +509,6 @@ grant SELECT,INSERT on *.* to test_noprivs@localhost;
|
|||||||
show grants for test_noprivs@localhost;
|
show grants for test_noprivs@localhost;
|
||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT SELECT, INSERT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT SELECT, INSERT ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
@ -563,7 +557,6 @@ revoke TRIGGER on *.* from test_yesprivs@localhost;
|
|||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
Grants for test_yesprivs@localhost
|
Grants for test_yesprivs@localhost
|
||||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, CREATE TABLESPACE ON *.* TO 'test_yesprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
@ -698,7 +691,6 @@ select f1 from t1 order by f1;
|
|||||||
f1
|
f1
|
||||||
insert-yes
|
insert-yes
|
||||||
insert-yes
|
insert-yes
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_yesprivs@localhost
|
test_yesprivs@localhost
|
||||||
@ -767,9 +759,7 @@ Grants for test_noprivs@localhost
|
|||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, INSERT, UPDATE ON `priv1_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, INSERT, UPDATE ON `priv1_db`.* TO 'test_noprivs'@'localhost'
|
||||||
GRANT SELECT, INSERT ON `priv2_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, INSERT ON `priv2_db`.* TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
use priv1_db;
|
use priv1_db;
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
use priv1_db;
|
use priv1_db;
|
||||||
|
|
||||||
trigger privilege on one db1 db level, not on db2
|
trigger privilege on one db1 db level, not on db2
|
||||||
@ -982,7 +972,6 @@ create User test_useprivs@localhost;
|
|||||||
set password for test_useprivs@localhost = password('PWD');
|
set password for test_useprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_useprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_useprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
root@localhost
|
root@localhost
|
||||||
@ -1010,7 +999,6 @@ select f1 from t1 order by f1;
|
|||||||
f1
|
f1
|
||||||
trig 1_1-yes
|
trig 1_1-yes
|
||||||
prepare ins1 from 'insert into t1 (f1) values (''insert2-no'')';
|
prepare ins1 from 'insert into t1 (f1) values (''insert2-no'')';
|
||||||
connect(localhost,test_useprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
test_useprivs@localhost
|
test_useprivs@localhost
|
||||||
@ -1206,7 +1194,6 @@ create table t1 (f1 char(20)) engine= ndb;
|
|||||||
create User test_yesprivs@localhost;
|
create User test_yesprivs@localhost;
|
||||||
set password for test_yesprivs@localhost = password('PWD');
|
set password for test_yesprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
root@localhost
|
root@localhost
|
||||||
@ -1303,7 +1290,6 @@ create table t1 (f1 char(20)) engine= ndb;
|
|||||||
create User test_yesprivs@localhost;
|
create User test_yesprivs@localhost;
|
||||||
set password for test_yesprivs@localhost = password('PWD');
|
set password for test_yesprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
select current_user;
|
select current_user;
|
||||||
current_user
|
current_user
|
||||||
root@localhost
|
root@localhost
|
||||||
@ -1375,8 +1361,6 @@ show grants for test_noprivs@localhost;
|
|||||||
Grants for test_noprivs@localhost
|
Grants for test_noprivs@localhost
|
||||||
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
GRANT USAGE ON *.* TO 'test_noprivs'@'localhost' IDENTIFIED BY PASSWORD '*C49735D016A099C0CF104EF9183F374A54CA2576'
|
||||||
GRANT SELECT, UPDATE ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
GRANT SELECT, UPDATE ON `priv_db`.* TO 'test_noprivs'@'localhost'
|
||||||
connect(localhost,test_yesprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_noprivs,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
update only on column:
|
update only on column:
|
||||||
----------------------
|
----------------------
|
||||||
|
@ -67,8 +67,6 @@ revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
|
|||||||
create User test_super@localhost;
|
create User test_super@localhost;
|
||||||
set password for test_super@localhost = password('PWD');
|
set password for test_super@localhost = password('PWD');
|
||||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||||
connect(localhost,test_general,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_super,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
Testcase 3.5.4:
|
Testcase 3.5.4:
|
||||||
---------------
|
---------------
|
||||||
|
@ -67,8 +67,6 @@ revoke ALL PRIVILEGES, GRANT OPTION FROM test_general@localhost;
|
|||||||
create User test_super@localhost;
|
create User test_super@localhost;
|
||||||
set password for test_super@localhost = password('PWD');
|
set password for test_super@localhost = password('PWD');
|
||||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||||
connect(localhost,test_general,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
connect(localhost,test_super,PWD,test,MASTER_MYPORT,MASTER_MYSOCK);
|
|
||||||
|
|
||||||
Testcase 3.5.8.1: (implied in previous tests)
|
Testcase 3.5.8.1: (implied in previous tests)
|
||||||
---------------------------------------------
|
---------------------------------------------
|
||||||
|
@ -1831,7 +1831,6 @@ CREATE PROCEDURE sp11() insert into mysql.t1 values('a');
|
|||||||
SELECT security_type from mysql.proc where specific_name='sp11';
|
SELECT security_type from mysql.proc where specific_name='sp11';
|
||||||
security_type
|
security_type
|
||||||
DEFINER
|
DEFINER
|
||||||
connect(localhost,user_1,,db_storedproc,MYSQL_PORT,MYSQL_SOCK);
|
|
||||||
|
|
||||||
user_1@localhost db_storedproc
|
user_1@localhost db_storedproc
|
||||||
CALL sp11();
|
CALL sp11();
|
||||||
|
@ -53,7 +53,6 @@ flush privileges;
|
|||||||
DROP PROCEDURE IF EXISTS sp1;
|
DROP PROCEDURE IF EXISTS sp1;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user1a, localhost, user_1, , db_storedproc_1);
|
connect (user1a, localhost, user_1, , db_storedproc_1);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
|
|
||||||
@ -75,7 +74,6 @@ USE db_storedproc_1;
|
|||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
|
|
||||||
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
GRANT CREATE ROUTINE ON db_storedproc_1.* TO 'user_1'@'localhost';
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user1b, localhost, user_1, , db_storedproc_1);
|
connect (user1b, localhost, user_1, , db_storedproc_1);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
|
|
||||||
@ -120,7 +118,6 @@ grant create routine on db_storedproc_1.* to 'user_1'@'localhost';
|
|||||||
flush privileges;
|
flush privileges;
|
||||||
|
|
||||||
# disconnect default;
|
# disconnect default;
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user2, localhost, user_1, , db_storedproc_1);
|
connect (user2, localhost, user_1, , db_storedproc_1);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
|
|
||||||
@ -187,7 +184,6 @@ delimiter ;//
|
|||||||
|
|
||||||
#disconnect default;
|
#disconnect default;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user3, localhost, user_1, , db_storedproc_1);
|
connect (user3, localhost, user_1, , db_storedproc_1);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
|
|
||||||
@ -234,7 +230,6 @@ grant SELECT on db_storedproc_1.* to 'user_2'@'localhost';
|
|||||||
grant execute on db_storedproc_1.* to 'user_2'@'localhost';
|
grant execute on db_storedproc_1.* to 'user_2'@'localhost';
|
||||||
flush privileges;
|
flush privileges;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user5_1, localhost, user_1, , db_storedproc_1);
|
connect (user5_1, localhost, user_1, , db_storedproc_1);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
|
|
||||||
@ -258,7 +253,6 @@ delimiter ;//
|
|||||||
|
|
||||||
disconnect user5_1;
|
disconnect user5_1;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user5_2, localhost, user_2, , db_storedproc_1);
|
connect (user5_2, localhost, user_2, , db_storedproc_1);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
|
|
||||||
@ -365,7 +359,6 @@ GRANT SELECT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
|||||||
GRANT EXECUTE ON db_storedproc_1.* TO 'user_2'@'localhost';
|
GRANT EXECUTE ON db_storedproc_1.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user6_1, localhost, user_1, , db_storedproc_1);
|
connect (user6_1, localhost, user_1, , db_storedproc_1);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
|
|
||||||
@ -389,7 +382,6 @@ delimiter ;//
|
|||||||
|
|
||||||
disconnect user6_1;
|
disconnect user6_1;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user6_2, localhost, user_2, , db_storedproc_1);
|
connect (user6_2, localhost, user_2, , db_storedproc_1);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
|
|
||||||
@ -407,7 +399,6 @@ GRANT INSERT ON db_storedproc_1.* TO 'user_2'@'localhost';
|
|||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
disconnect user6_2;
|
disconnect user6_2;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user6_3, localhost, user_2, , db_storedproc_1);
|
connect (user6_3, localhost, user_2, , db_storedproc_1);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
CALL sp3166_s_i();
|
CALL sp3166_s_i();
|
||||||
@ -422,7 +413,6 @@ CALL sp3166_sel();
|
|||||||
REVOKE SELECT ON db_storedproc_1.* FROM 'user_2'@'localhost';
|
REVOKE SELECT ON db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user6_4, localhost, user_2, , db_storedproc_1);
|
connect (user6_4, localhost, user_2, , db_storedproc_1);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
--error ER_TABLEACCESS_DENIED_ERROR
|
--error ER_TABLEACCESS_DENIED_ERROR
|
||||||
@ -439,7 +429,6 @@ CALL sp3166_s_i();
|
|||||||
REVOKE EXECUTE on db_storedproc_1.* FROM 'user_2'@'localhost';
|
REVOKE EXECUTE on db_storedproc_1.* FROM 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user6_5, localhost, user_2, , db_storedproc_1);
|
connect (user6_5, localhost, user_2, , db_storedproc_1);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
--error ER_PROCACCESS_DENIED_ERROR
|
--error ER_PROCACCESS_DENIED_ERROR
|
||||||
|
@ -58,7 +58,6 @@ GRANT CREATE ROUTINE ON db_storedproc.* TO 'user_1'@'localhost';
|
|||||||
GRANT SELECT ON db_storedproc.* TO 'user_2'@'localhost';
|
GRANT SELECT ON db_storedproc.* TO 'user_2'@'localhost';
|
||||||
FLUSH PRIVILEGES;
|
FLUSH PRIVILEGES;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user2_1, localhost, user_1, , db_storedproc);
|
connect (user2_1, localhost, user_1, , db_storedproc);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
|
|
||||||
@ -80,7 +79,6 @@ delimiter ;//
|
|||||||
|
|
||||||
disconnect user2_1;
|
disconnect user2_1;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user2_2, localhost, user_2, , db_storedproc);
|
connect (user2_2, localhost, user_2, , db_storedproc);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
|
|
||||||
@ -102,7 +100,6 @@ FLUSH PRIVILEGES;
|
|||||||
disconnect user2_2;
|
disconnect user2_2;
|
||||||
|
|
||||||
# new connection
|
# new connection
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user2_3, localhost, user_2, , db_storedproc);
|
connect (user2_3, localhost, user_2, , db_storedproc);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
@ -121,7 +118,6 @@ FLUSH PRIVILEGES;
|
|||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
SELECT fn31105( 9 );
|
SELECT fn31105( 9 );
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MYSQL_PORT $MASTER_MYSOCK MYSQL_SOCK
|
|
||||||
connect (user2_4, localhost, user_2, , db_storedproc);
|
connect (user2_4, localhost, user_2, , db_storedproc);
|
||||||
--source suite/funcs_1/include/show_connection.inc
|
--source suite/funcs_1/include/show_connection.inc
|
||||||
CALL sp31102();
|
CALL sp31102();
|
||||||
|
@ -62,9 +62,7 @@ let $message= Testcase 3.5.3.2/6:;
|
|||||||
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
|
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
|
||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
@ -155,9 +153,7 @@ let $message=Testcase 3.5.3.7a:;
|
|||||||
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
|
grant TRIGGER, UPDATE on *.* to test_yesprivs@localhost;
|
||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs_424a,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs_424a,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs_424a,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs_424a,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
|
|
||||||
connection no_privs_424a;
|
connection no_privs_424a;
|
||||||
@ -209,9 +205,7 @@ let $message= Testcase 3.5.3.7b:;
|
|||||||
grant UPDATE on priv_db.* to test_yesprivs@localhost;
|
grant UPDATE on priv_db.* to test_yesprivs@localhost;
|
||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs_424b,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs_424b,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs_424b,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs_424b,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
@ -263,9 +257,7 @@ let $message= Testcase 3.5.3.7c;
|
|||||||
grant UPDATE on priv_db.t1 to test_yesprivs@localhost;
|
grant UPDATE on priv_db.t1 to test_yesprivs@localhost;
|
||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs_424c,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs_424c,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs_424c,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs_424c,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
@ -316,9 +308,7 @@ let $message= Testcase 3.5.3.7d:;
|
|||||||
grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost;
|
grant UPDATE (f1) on priv_db.t1 to test_yesprivs@localhost;
|
||||||
show grants for test_noprivs;
|
show grants for test_noprivs;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs_424d,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs_424d,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs_424d,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs_424d,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
@ -369,9 +359,7 @@ let $message= Testcase 3.5.3.8a:;
|
|||||||
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
|
grant TRIGGER, SELECT on *.* to test_yesprivs@localhost;
|
||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs_425a,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs_425a,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs_425a,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs_425a,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
@ -426,9 +414,7 @@ let $message= Testcase: 3.5.3.8b;
|
|||||||
grant SELECT on priv_db.* to test_yesprivs@localhost;
|
grant SELECT on priv_db.* to test_yesprivs@localhost;
|
||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs_425b,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs_425b,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs_425b,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs_425b,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
@ -482,9 +468,7 @@ let $message= Testcase 3.5.3.8c:;
|
|||||||
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
|
grant SELECT on priv_db.t1 to test_yesprivs@localhost;
|
||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs_425c,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs_425c,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs_425c,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs_425c,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
@ -534,9 +518,7 @@ let $message=Testcase: 3.5.3.8d:;
|
|||||||
grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost;
|
grant SELECT (f1) on priv_db.t1 to test_yesprivs@localhost;
|
||||||
show grants for test_noprivs@localhost;
|
show grants for test_noprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs_425d,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs_425d,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs_425d,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs_425d,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
@ -592,7 +574,6 @@ let $message=Testcase: 3.5.3.x:;
|
|||||||
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
|
grant SELECT on priv_db.t2 to test_yesprivs@localhost;
|
||||||
show grants for test_yesprivs@localhost;
|
show grants for test_yesprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_353x,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_353x,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
|
|
||||||
connection yes_353x;
|
connection yes_353x;
|
||||||
|
@ -36,10 +36,8 @@ let $message= ####### Testcase for column privileges of triggers: #######;
|
|||||||
grant SELECT,UPDATE on priv_db.* to test_noprivs@localhost;
|
grant SELECT,UPDATE on priv_db.* to test_noprivs@localhost;
|
||||||
show grants for test_noprivs@localhost;
|
show grants for test_noprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
|
|
||||||
# grant TRIGGER and UPDATE on column -> succeed
|
# grant TRIGGER and UPDATE on column -> succeed
|
||||||
|
@ -37,7 +37,6 @@ let $message= Testcase for db level:;
|
|||||||
show grants for test_noprivs@localhost;
|
show grants for test_noprivs@localhost;
|
||||||
|
|
||||||
# no trigger privilege->create trigger must fail:
|
# no trigger privilege->create trigger must fail:
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
let $message= no trigger privilege on db level for create:;
|
let $message= no trigger privilege on db level for create:;
|
||||||
--source include/show_msg.inc
|
--source include/show_msg.inc
|
||||||
@ -47,7 +46,6 @@ let $message= no trigger privilege on db level for create:;
|
|||||||
set new.f1 = 'trig 1_1-no';
|
set new.f1 = 'trig 1_1-no';
|
||||||
|
|
||||||
# user with minimum privs on t1->no trigger executed;
|
# user with minimum privs on t1->no trigger executed;
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
use priv_db;
|
use priv_db;
|
||||||
insert into t1 (f1) values ('insert-yes');
|
insert into t1 (f1) values ('insert-yes');
|
||||||
|
@ -41,10 +41,8 @@ let $message= ####### Testcase for mix of db and table level: #######;
|
|||||||
grant SELECT,INSERT on priv2_db.* to test_noprivs@localhost;
|
grant SELECT,INSERT on priv2_db.* to test_noprivs@localhost;
|
||||||
show grants for test_noprivs@localhost;
|
show grants for test_noprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
use priv1_db;
|
use priv1_db;
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
use priv1_db;
|
use priv1_db;
|
||||||
|
|
||||||
|
@ -27,7 +27,6 @@ let $message= ######### Testcase for definer: ########;
|
|||||||
|
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
|
|
||||||
# create trigger with not existing definer shall deliver a warning:
|
# create trigger with not existing definer shall deliver a warning:
|
||||||
|
@ -38,10 +38,8 @@ let $message= #### Testcase for mix of user(global) and db level: ####;
|
|||||||
grant SELECT,INSERT on *.* to test_noprivs@localhost;
|
grant SELECT,INSERT on *.* to test_noprivs@localhost;
|
||||||
show grants for test_noprivs@localhost;
|
show grants for test_noprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
|
|
||||||
connection yes_privs;
|
connection yes_privs;
|
||||||
@ -83,7 +81,6 @@ let $message= trigger privilege on user level for create:;
|
|||||||
--disable_warnings
|
--disable_warnings
|
||||||
disconnect yes_privs;
|
disconnect yes_privs;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
select current_user;
|
select current_user;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
@ -184,7 +181,6 @@ let $message= trigger privilege on db level for create:;
|
|||||||
--disable_warnings
|
--disable_warnings
|
||||||
disconnect yes_privs;
|
disconnect yes_privs;
|
||||||
--enable_warnings
|
--enable_warnings
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
select current_user;
|
select current_user;
|
||||||
use no_priv_db;
|
use no_priv_db;
|
||||||
|
@ -32,7 +32,6 @@ let $message= #### Testcase for trigger privilege on execution time ########;
|
|||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_useprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_useprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
@ -56,7 +55,6 @@ let $message= #### Testcase for trigger privilege on execution time ########;
|
|||||||
select f1 from t1 order by f1;
|
select f1 from t1 order by f1;
|
||||||
prepare ins1 from 'insert into t1 (f1) values (''insert2-no'')';
|
prepare ins1 from 'insert into t1 (f1) values (''insert2-no'')';
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (use_privs,localhost,test_useprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (use_privs,localhost,test_useprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
select current_user;
|
select current_user;
|
||||||
use priv_db;
|
use priv_db;
|
||||||
|
@ -30,10 +30,8 @@ let $message= ######### Testcase for table level: ########;
|
|||||||
set password for test_noprivs@localhost = password('PWD');
|
set password for test_noprivs@localhost = password('PWD');
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_noprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (no_privs,localhost,test_noprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
|
|
||||||
################ Section 3.5.3 ############
|
################ Section 3.5.3 ############
|
||||||
|
@ -27,7 +27,6 @@ let $message= ######### Testcase for transactions: ########;
|
|||||||
|
|
||||||
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
revoke ALL PRIVILEGES, GRANT OPTION FROM test_yesprivs@localhost;
|
||||||
|
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (yes_privs,localhost,test_yesprivs,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
|
|
||||||
connection default;
|
connection default;
|
||||||
|
@ -22,9 +22,7 @@ let $message= Testcase: 3.5:;
|
|||||||
create User test_super@localhost;
|
create User test_super@localhost;
|
||||||
set password for test_super@localhost = password('PWD');
|
set password for test_super@localhost = password('PWD');
|
||||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (con1_general,localhost,test_general,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (con1_general,localhost,test_general,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (con1_super,localhost,test_super,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (con1_super,localhost,test_super,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
|
@ -23,9 +23,7 @@ let $message= Testcase: 3.5:;
|
|||||||
create User test_super@localhost;
|
create User test_super@localhost;
|
||||||
set password for test_super@localhost = password('PWD');
|
set password for test_super@localhost = password('PWD');
|
||||||
grant ALL on *.* to test_super@localhost with grant OPTION;
|
grant ALL on *.* to test_super@localhost with grant OPTION;
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (con2_general,localhost,test_general,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (con2_general,localhost,test_general,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
--replace_result $MASTER_MYPORT MASTER_MYPORT $MASTER_MYSOCK MASTER_MYSOCK
|
|
||||||
connect (con2_super,localhost,test_super,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
connect (con2_super,localhost,test_super,PWD,test,$MASTER_MYPORT,$MASTER_MYSOCK);
|
||||||
connection default;
|
connection default;
|
||||||
|
|
||||||
|
@ -500,11 +500,7 @@ INSERT INTO t2 VALUES (),();
|
|||||||
CREATE OR REPLACE VIEW v1 AS SELECT 1 FROM t2
|
CREATE OR REPLACE VIEW v1 AS SELECT 1 FROM t2
|
||||||
WHERE b =(SELECT a FROM t1 LIMIT 1);
|
WHERE b =(SELECT a FROM t1 LIMIT 1);
|
||||||
|
|
||||||
--disable_query_log
|
|
||||||
--disable_result_log
|
|
||||||
CONNECT (con1, localhost, root,,);
|
CONNECT (con1, localhost, root,,);
|
||||||
--enable_query_log
|
|
||||||
--enable_result_log
|
|
||||||
CONNECTION default;
|
CONNECTION default;
|
||||||
|
|
||||||
DELIMITER |;
|
DELIMITER |;
|
||||||
|
@ -1553,26 +1553,25 @@ drop table t1;
|
|||||||
# whole alter table code is being tested all around the test suite already.
|
# whole alter table code is being tested all around the test suite already.
|
||||||
#
|
#
|
||||||
|
|
||||||
create table t1 (v varchar(32) not null);
|
create table t1 (v varchar(32) not null) engine=csv;
|
||||||
insert into t1 values ('def'),('abc'),('hij'),('3r4f');
|
insert into t1 values ('def'),('abc'),('hij'),('3r4f');
|
||||||
select * from t1;
|
select * from t1;
|
||||||
# Fast alter, no copy performed
|
# Fast alter, no copy performed
|
||||||
alter table t1 change v v2 varchar(32);
|
alter table t1 change v v2 varchar(32) not null;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
# Fast alter, no copy performed
|
# Fast alter, no copy performed
|
||||||
alter table t1 change v2 v varchar(64);
|
alter table t1 change v2 v varchar(64) not null;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
update t1 set v = 'lmn' where v = 'hij';
|
update t1 set v = 'lmn' where v = 'hij';
|
||||||
select * from t1;
|
select * from t1;
|
||||||
# Regular alter table
|
# Regular alter table
|
||||||
alter table t1 add i int auto_increment not null primary key first;
|
alter table t1 add i int not null first;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
update t1 set i=5 where i=3;
|
update t1 set i=3 where v = 'abc';
|
||||||
select * from t1;
|
select * from t1;
|
||||||
alter table t1 change i i bigint;
|
alter table t1 change i i bigint not null;
|
||||||
select * from t1;
|
select * from t1;
|
||||||
alter table t1 add unique key (i, v);
|
select * from t1 where i between 2 and 4 and v in ('def','3r4f','abc');
|
||||||
select * from t1 where i between 2 and 4 and v in ('def','3r4f','lmn');
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -325,6 +325,15 @@ eval select $mysql_errno as "after_!errno_masked_error" ;
|
|||||||
--error 1
|
--error 1
|
||||||
--exec echo "disable_abort_on_error; error 1000; select 3 from t1; error 1000; select 3 from t1;" | $MYSQL_TEST 2>&1
|
--exec echo "disable_abort_on_error; error 1000; select 3 from t1; error 1000; select 3 from t1;" | $MYSQL_TEST 2>&1
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Check some non-query statements that would fail
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
--exec illegal_command
|
||||||
|
--cat_file does_not_exist
|
||||||
|
--perl
|
||||||
|
exit(1);
|
||||||
|
EOF
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# Switch the abort on error on and check the effect on $mysql_errno
|
# Switch the abort on error on and check the effect on $mysql_errno
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
@ -863,7 +872,7 @@ while ($outer)
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Test source in an if in a while which is false on 1st iteration
|
# Test source in an if in a while which is false on 1st iteration
|
||||||
# Also test --error in same context
|
# Also test --error and --disable_abort_on_error in same context
|
||||||
let $outer= 2; # Number of outer loops
|
let $outer= 2; # Number of outer loops
|
||||||
let $ifval= 0; # false 1st time
|
let $ifval= 0; # false 1st time
|
||||||
while ($outer)
|
while ($outer)
|
||||||
@ -874,6 +883,10 @@ while ($outer)
|
|||||||
--source $MYSQLTEST_VARDIR/tmp/sourced.inc
|
--source $MYSQLTEST_VARDIR/tmp/sourced.inc
|
||||||
--error ER_NO_SUCH_TABLE
|
--error ER_NO_SUCH_TABLE
|
||||||
SELECT * from nowhere;
|
SELECT * from nowhere;
|
||||||
|
--disable_abort_on_error
|
||||||
|
# Statement giving a different error, to make sure we don't mask it
|
||||||
|
SELECT * FROM nowhere else;
|
||||||
|
--enable_abort_on_error
|
||||||
}
|
}
|
||||||
dec $outer;
|
dec $outer;
|
||||||
inc $ifval;
|
inc $ifval;
|
||||||
@ -1092,6 +1105,36 @@ if (!$counter)
|
|||||||
echo Counter is not 0, (counter=0);
|
echo Counter is not 0, (counter=0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
# Test if with some non-numerics
|
||||||
|
# ----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
let $counter=alpha;
|
||||||
|
if ($counter)
|
||||||
|
{
|
||||||
|
echo Counter is true, (counter=alpha);
|
||||||
|
}
|
||||||
|
let $counter= ;
|
||||||
|
if ($counter)
|
||||||
|
{
|
||||||
|
echo oops, space is true;
|
||||||
|
}
|
||||||
|
let $counter=-0;
|
||||||
|
if ($counter)
|
||||||
|
{
|
||||||
|
echo oops, -0 is true;
|
||||||
|
}
|
||||||
|
if (beta)
|
||||||
|
{
|
||||||
|
echo Beta is true;
|
||||||
|
}
|
||||||
|
let $counter=gamma;
|
||||||
|
while ($counter)
|
||||||
|
{
|
||||||
|
echo while with string, only once;
|
||||||
|
let $counter=000;
|
||||||
|
}
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
# Test while, { and }
|
# Test while, { and }
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
@ -1437,7 +1480,6 @@ EOF
|
|||||||
remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql;
|
remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.sql;
|
||||||
|
|
||||||
# connect when "disable_abort_on_error" caused "connection not found"
|
# connect when "disable_abort_on_error" caused "connection not found"
|
||||||
--replace_result $MASTER_MYSOCK MASTER_SOCKET $MASTER_MYPORT MASTER_PORT
|
|
||||||
--disable_abort_on_error
|
--disable_abort_on_error
|
||||||
connect (con1,localhost,root,,);
|
connect (con1,localhost,root,,);
|
||||||
connection default;
|
connection default;
|
||||||
@ -1724,7 +1766,16 @@ select 1;
|
|||||||
--reap
|
--reap
|
||||||
EOF
|
EOF
|
||||||
--error 1
|
--error 1
|
||||||
--exec $MYSQL_TEST < $MYSQLTEST_VARDIR/tmp/mysqltest.in 2>&1
|
# Must filter unpredictable extra warning from output
|
||||||
|
--exec $MYSQL_TEST < $MYSQLTEST_VARDIR/tmp/mysqltest.in > $MYSQL_TMP_DIR/mysqltest.out 2>&1
|
||||||
|
--perl
|
||||||
|
my $dir= $ENV{'MYSQL_TMP_DIR'};
|
||||||
|
open (FILE, "$dir/mysqltest.out");
|
||||||
|
while (<FILE>) {
|
||||||
|
print unless /Note: net_clear/; # This shows up on rare occations
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
remove_file $MYSQL_TMP_DIR/mysqltest.out;
|
||||||
remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.in;
|
remove_file $MYSQLTEST_VARDIR/tmp/mysqltest.in;
|
||||||
|
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
Reference in New Issue
Block a user