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
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
c7e756f9
Commit
c7e756f9
authored
Dec 30, 2004
by
serg@sergbook.mysql.com
Browse files
Options
Browse Files
Download
Plain Diff
merged
parents
2aa98f89
12bf7dcd
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
54 additions
and
55 deletions
+54
-55
mysql-test/r/alter_table.result
mysql-test/r/alter_table.result
+1
-1
mysql-test/r/grant_cache.result
mysql-test/r/grant_cache.result
+3
-3
sql/sql_acl.cc
sql/sql_acl.cc
+50
-51
No files found.
mysql-test/r/alter_table.result
View file @
c7e756f9
...
...
@@ -121,7 +121,7 @@ create database mysqltest;
create table mysqltest.t1 (a int,b int,c int);
grant all on mysqltest.t1 to mysqltest_1@localhost;
alter table t1 rename t2;
ERROR 42000:
insert command denied to user 'mysqltest_1'@'
localhost' for table 't2'
ERROR 42000:
INSERT,CREATE command denied to user: 'mysqltest_1@
localhost' for table 't2'
revoke all privileges on mysqltest.t1 from mysqltest_1@localhost;
delete from mysql.user where user=_binary'mysqltest_1';
drop database mysqltest;
...
...
mysql-test/r/grant_cache.result
View file @
c7e756f9
...
...
@@ -134,7 +134,7 @@ a b c a
1 1 1 test.t1
2 2 2 test.t1
select * from t2;
ERROR 42000:
select command denied to user 'mysqltest_2'@'
localhost' for table 't2'
ERROR 42000:
SELECT command denied to user: 'mysqltest_2@
localhost' for table 't2'
show status like "Qcache_queries_in_cache";
Variable_name Value
Qcache_queries_in_cache 6
...
...
@@ -148,7 +148,7 @@ select "user3";
user3
user3
select * from t1;
ERROR 42000:
select command denied to user 'mysqltest_3'@'
localhost' for column 'b' in table 't1'
ERROR 42000:
SELECT command denied to user: 'mysqltest_3@
localhost' for column 'b' in table 't1'
select a from t1;
a
1
...
...
@@ -156,7 +156,7 @@ a
select c from t1;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
select * from t2;
ERROR 42000:
select command denied to user 'mysqltest_3'@'
localhost' for table 't2'
ERROR 42000:
SELECT command denied to user: 'mysqltest_3@
localhost' for table 't2'
select mysqltest.t1.c from test.t1,mysqltest.t1;
ERROR 42000: SELECT command denied to user 'mysqltest_3'@'localhost' for column 'c' in table 't1'
show status like "Qcache_queries_in_cache";
...
...
sql/sql_acl.cc
View file @
c7e756f9
...
...
@@ -2256,39 +2256,58 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list,
DBUG_RETURN
(
-
1
);
}
if
(
columns
.
elements
&&
!
revoke_grant
)
if
(
!
revoke_grant
)
{
TABLE
*
table
;
class
LEX_COLUMN
*
column
;
List_iterator
<
LEX_COLUMN
>
column_iter
(
columns
);
if
(
!
(
table
=
open_ltable
(
thd
,
table_list
,
TL_READ
)))
DBUG_RETURN
(
-
1
);
while
((
column
=
column_iter
++
))
if
(
columns
.
elements
&&
!
revoke_grant
)
{
uint
unused_field_idx
=
NO_CACHED_FIELD_INDEX
;
if
(
!
find_field_in_table
(
thd
,
table
,
column
->
column
.
ptr
(),
column
->
column
.
length
(),
0
,
0
,
&
unused_field_idx
))
TABLE
*
table
;
class
LEX_COLUMN
*
column
;
List_iterator
<
LEX_COLUMN
>
column_iter
(
columns
);
if
(
!
(
table
=
open_ltable
(
thd
,
table_list
,
TL_READ
)))
DBUG_RETURN
(
-
1
);
while
((
column
=
column_iter
++
))
{
my_error
(
ER_BAD_FIELD_ERROR
,
MYF
(
0
),
column
->
column
.
c_ptr
(),
table_list
->
alias
);
DBUG_RETURN
(
-
1
);
uint
unused_field_idx
=
NO_CACHED_FIELD_INDEX
;
Field
*
f
=
find_field_in_table
(
thd
,
table
,
column
->
column
.
ptr
(),
column
->
column
.
length
(),
1
,
0
,
&
unused_field_idx
);
if
(
!
f
)
{
my_error
(
ER_BAD_FIELD_ERROR
,
MYF
(
0
),
column
->
column
.
c_ptr
(),
table_list
->
alias
);
DBUG_RETURN
(
-
1
);
}
if
(
f
==
(
Field
*
)
-
1
)
{
DBUG_RETURN
(
-
1
);
}
column_priv
|=
column
->
rights
;
}
c
olumn_priv
|=
column
->
rights
;
c
lose_thread_tables
(
thd
)
;
}
close_thread_tables
(
thd
);
}
else
if
(
!
(
rights
&
CREATE_ACL
)
&&
!
revoke_grant
)
{
char
buf
[
FN_REFLEN
];
sprintf
(
buf
,
"%s/%s/%s.frm"
,
mysql_data_home
,
table_list
->
db
,
table_list
->
real_name
);
fn_format
(
buf
,
buf
,
""
,
""
,
4
+
16
+
32
);
if
(
access
(
buf
,
F_OK
))
else
{
my_error
(
ER_NO_SUCH_TABLE
,
MYF
(
0
),
table_list
->
db
,
table_list
->
alias
);
DBUG_RETURN
(
-
1
);
if
(
!
(
rights
&
CREATE_ACL
))
{
char
buf
[
FN_REFLEN
];
sprintf
(
buf
,
"%s/%s/%s.frm"
,
mysql_data_home
,
table_list
->
db
,
table_list
->
real_name
);
fn_format
(
buf
,
buf
,
""
,
""
,
4
+
16
+
32
);
if
(
access
(
buf
,
F_OK
))
{
my_error
(
ER_NO_SUCH_TABLE
,
MYF
(
0
),
table_list
->
db
,
table_list
->
alias
);
DBUG_RETURN
(
-
1
);
}
}
if
(
table_list
->
grant
.
want_privilege
)
{
char
command
[
128
];
get_privilege_desc
(
command
,
sizeof
(
command
),
table_list
->
grant
.
want_privilege
);
my_error
(
ER_TABLEACCESS_DENIED_ERROR
,
MYF
(
0
),
command
,
thd
->
priv_user
,
thd
->
host_or_ip
,
table_list
->
alias
);
DBUG_RETURN
(
-
1
);
}
}
}
...
...
@@ -2773,25 +2792,8 @@ bool check_grant(THD *thd, ulong want_access, TABLE_LIST *tables,
rw_unlock
(
&
LOCK_grant
);
if
(
!
no_errors
)
// Not a silent skip of table
{
const
char
*
command
=
""
;
if
(
want_access
&
SELECT_ACL
)
command
=
"select"
;
else
if
(
want_access
&
INSERT_ACL
)
command
=
"insert"
;
else
if
(
want_access
&
UPDATE_ACL
)
command
=
"update"
;
else
if
(
want_access
&
DELETE_ACL
)
command
=
"delete"
;
else
if
(
want_access
&
DROP_ACL
)
command
=
"drop"
;
else
if
(
want_access
&
CREATE_ACL
)
command
=
"create"
;
else
if
(
want_access
&
ALTER_ACL
)
command
=
"alter"
;
else
if
(
want_access
&
INDEX_ACL
)
command
=
"index"
;
else
if
(
want_access
&
GRANT_ACL
)
command
=
"grant"
;
char
command
[
128
];
get_privilege_desc
(
command
,
sizeof
(
command
),
want_access
);
net_printf
(
thd
,
ER_TABLEACCESS_DENIED_ERROR
,
command
,
thd
->
priv_user
,
...
...
@@ -2906,11 +2908,8 @@ bool check_grant_all_columns(THD *thd, ulong want_access, TABLE *table)
err:
rw_unlock
(
&
LOCK_grant
);
err2:
const
char
*
command
=
""
;
if
(
want_access
&
SELECT_ACL
)
command
=
"select"
;
else
if
(
want_access
&
INSERT_ACL
)
command
=
"insert"
;
char
command
[
128
];
get_privilege_desc
(
command
,
sizeof
(
command
),
want_access
);
my_printf_error
(
ER_COLUMNACCESS_DENIED_ERROR
,
ER
(
ER_COLUMNACCESS_DENIED_ERROR
),
MYF
(
0
),
...
...
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