Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
f3eb7fe0
Commit
f3eb7fe0
authored
Mar 13, 2003
by
unknown
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Better fix for GRANT bug
tests/grant.pl: More options for test tests/grant.res: new test results
parent
c7551b88
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
45 additions
and
31 deletions
+45
-31
sql/sql_base.cc
sql/sql_base.cc
+5
-2
tests/grant.pl
tests/grant.pl
+33
-22
tests/grant.res
tests/grant.res
+7
-7
No files found.
sql/sql_base.cc
View file @
f3eb7fe0
...
...
@@ -1644,7 +1644,8 @@ find_field_in_tables(THD *thd,Item_field *item,TABLE_LIST *tables)
found_table
=
1
;
Field
*
find
=
find_field_in_table
(
thd
,
tables
->
table
,
name
,
length
,
grant_option
&&
tables
->
grant
.
want_privilege
,
1
);
tables
->
table
->
grant
.
want_privilege
,
1
);
if
(
find
)
{
if
(
find
==
WRONG_GRANT
)
...
...
@@ -1683,7 +1684,9 @@ find_field_in_tables(THD *thd,Item_field *item,TABLE_LIST *tables)
for
(;
tables
;
tables
=
tables
->
next
)
{
Field
*
field
=
find_field_in_table
(
thd
,
tables
->
table
,
name
,
length
,
grant_option
&&
tables
->
grant
.
want_privilege
,
allow_rowid
);
grant_option
&&
tables
->
table
->
grant
.
want_privilege
,
allow_rowid
);
if
(
field
)
{
if
(
field
==
WRONG_GRANT
)
...
...
tests/grant.pl
View file @
f3eb7fe0
...
...
@@ -8,12 +8,13 @@ use DBI;
use
Getopt::
Long
;
use
strict
;
use
vars
qw($dbh $user_dbh $opt_help $opt_Information $opt_force $opt_debug
$opt_verbose $opt_server $opt_root_user $opt_password $opt_user
$opt_database $opt_host $version $user $tables_cols $columns_cols)
;
use
vars
qw($dbh $user_dbh $opt_help $opt_Information $opt_force $opt_debug
$opt_verbose $opt_server $opt_root_user $opt_password $opt_user
$opt_database $opt_host $version $user $tables_cols $columns_cols
$opt_silent)
;
$version
=
"
1.
0
";
$opt_help
=
$opt_Information
=
$opt_force
=
$opt_debug
=
$opt_verbose
=
0
;
$version
=
"
1.
1
";
$opt_help
=
$opt_Information
=
$opt_force
=
$opt_debug
=
$opt_verbose
=
$opt_silent
=
0
;
$opt_host
=
"
localhost
",
$opt_server
=
"
mysql
";
$opt_root_user
=
"
root
";
...
...
@@ -21,7 +22,7 @@ $opt_password="";
$opt_user
=
"
grant_user
";
$opt_database
=
"
grant_test
";
GetOptions
("
Information
","
help
","
server=s
","
root-user=s
","
password=s
","
user
","
database=s
","
force
","
host=s
","
debug
","
verbose
")
||
usage
();
GetOptions
("
Information
","
help
","
server=s
","
root-user=s
","
password=s
","
user
","
database=s
","
force
","
host=s
","
debug
","
verbose
"
,"
silent
"
)
||
usage
();
usage
()
if
(
$opt_help
||
$opt_Information
);
$user
=
"
$opt_user
\
@
$opt_host
";
...
...
@@ -477,7 +478,10 @@ sub user_connect
$password
,
{
PrintError
=>
0
});
if
(
!
$user_dbh
)
{
print
"
$DBI
::errstr
\n
";
if
(
$opt_verbose
||
!
$ignore_error
)
{
print
"
Error on connect:
$DBI
::errstr
\n
";
}
if
(
!
$ignore_error
)
{
die
"
The above should not have failed!
";
...
...
@@ -492,7 +496,7 @@ sub user_connect
sub
safe_query
{
my
(
$query
,
$ignore_error
)
=
@_
;
if
(
do_query
(
$dbh
,
$query
))
if
(
do_query
(
$dbh
,
$query
,
$ignore_error
))
{
if
(
!
defined
(
$ignore_error
))
{
...
...
@@ -509,7 +513,7 @@ sub safe_query
sub
user_query
{
my
(
$query
,
$ignore_error
)
=
@_
;
if
(
do_query
(
$user_dbh
,
$query
))
if
(
do_query
(
$user_dbh
,
$query
,
$ignore_error
))
{
if
(
!
defined
(
$ignore_error
))
{
...
...
@@ -525,8 +529,8 @@ sub user_query
sub
do_query
{
my
(
$my_dbh
,
$query
)
=
@_
;
my
(
$sth
,
$row
,
$tab
,
$col
,
$found
);
my
(
$my_dbh
,
$query
,
$ignore_error
)
=
@_
;
my
(
$sth
,
$row
,
$tab
,
$col
,
$found
,
$fatal_error
);
print
"
$query
\n
"
if
(
$opt_debug
||
$opt_verbose
);
if
(
!
(
$sth
=
$my_dbh
->
prepare
(
$query
)))
...
...
@@ -536,25 +540,32 @@ sub do_query
}
if
(
!
$sth
->
execute
)
{
print
"
Error in execute:
$DBI
::errstr
\n
";
die
if
(
$
DBI::
errstr
=~
/parse error/
);
$fatal_error
=
(
$
DBI::
errstr
=~
/parse error/
);
if
(
!
$ignore_error
||
$opt_verbose
||
$fatal_error
)
{
print
"
Error in execute:
$DBI
::errstr
\n
";
}
die
if
(
$fatal_error
);
$sth
->
finish
;
return
1
;
}
$found
=
0
;
while
((
$row
=
$sth
->
fetchrow_arrayref
)
)
if
(
!
$opt_silent
)
{
$found
=
1
;
$tab
=
"";
foreach
$col
(
@$row
)
while
((
$row
=
$sth
->
fetchrow_arrayref
))
{
print
$tab
;
print
defined
(
$col
)
?
$col
:
"
NULL
";
$tab
=
"
\t
";
$found
=
1
;
$tab
=
"";
foreach
$col
(
@$row
)
{
print
$tab
;
print
defined
(
$col
)
?
$col
:
"
NULL
";
$tab
=
"
\t
";
}
print
"
\n
";
}
print
"
\n
";
print
"
\n
"
if
(
$found
)
;
}
print
"
\n
"
if
(
$found
);
$sth
->
finish
;
return
0
;
}
tests/grant.res
View file @
f3eb7fe0
...
...
@@ -9,13 +9,13 @@ drop database grant_test
Error in execute: Can't drop database 'grant_test'. Database doesn't exist
create database grant_test
Connecting grant_user
Access denied for user: '@localhost' to database 'grant_test'
Error on connect:
Access denied for user: '@localhost' to database 'grant_test'
grant select on *.* to grant_user@localhost
set password FOR grant_user2@localhost = password('test')
Error in execute: Can't find any matching row in the user table
set password FOR grant_user=password('test')
Connecting grant_user
Access denied for user: 'grant_user@localhost' (Using password: NO)
Error on connect:
Access denied for user: 'grant_user@localhost' (Using password: NO)
set password FOR grant_user=''
Connecting grant_user
select * from mysql.user where user = 'grant_user'
...
...
@@ -48,7 +48,7 @@ Error in execute: The host or user argument to GRANT is too long
grant select on grant_test.test to grant_user with grant option
Error in execute: grant command denied to user: 'grant_user@localhost' for table 'test'
set password FOR ''@''=''
Error in execute:
You are using MySQL as an anonymous users and anonymous users are not allowed to change passwords
Error in execute:
Can't find any matching row in the user table
set password FOR root@localhost = password('test')
Error in execute: Access denied for user: 'grant_user@localhost' to database 'mysql'
revoke select on *.* from grant_user@localhost
...
...
@@ -86,7 +86,7 @@ select count(*) from grant_test.test
revoke ALL PRIVILEGES on *.* from grant_user@localhost
Connecting grant_user
Access denied for user: 'grant_user@localhost' to database 'grant_test'
Error on connect:
Access denied for user: 'grant_user@localhost' to database 'grant_test'
delete from user where user='grant_user'
flush privileges
delete from user where user='grant_user'
...
...
@@ -133,7 +133,7 @@ insert into grant_test.test values (6,0)
Error in execute: Access denied for user: 'grant_user@localhost' to database 'grant_test'
REVOKE GRANT OPTION on grant_test.* from grant_user@localhost
Connecting grant_user
Access denied for user: 'grant_user@localhost' to database 'grant_test'
Error on connect:
Access denied for user: 'grant_user@localhost' to database 'grant_test'
grant ALL PRIVILEGES on grant_test.* to grant_user@localhost
Connecting grant_user
select * from mysql.user where user = 'grant_user'
...
...
@@ -156,7 +156,7 @@ localhost grant_user N N N N N N N N N N N N N N
select * from mysql.db where user = 'grant_user'
Connecting grant_user
Access denied for user: 'grant_user@localhost' to database 'grant_test'
Error on connect:
Access denied for user: 'grant_user@localhost' to database 'grant_test'
grant create on grant_test.test2 to grant_user@localhost
Connecting grant_user
create table grant_test.test2 (a int not null)
...
...
@@ -168,7 +168,7 @@ Error in execute: select command denied to user: 'grant_user@localhost' for tabl
show keys from test
Error in execute: select command denied to user: 'grant_user@localhost' for table 'test'
show columns from test2
a int(11) 0
a int(11) 0
show keys from test2
select * from test
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment