Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.1.1
Description
Test case |
--enable_connect_log
|
create database db; |
use db; |
create table t1 (i int, c varchar(8)); |
insert into t1 values (1,'foo'),(2,'bar'),(3,'baz'),(4,'qux'); |
create view v1 as select * from t1 where i > 1; |
grant all on db.v1 to u1@localhost; |
|
--connect (con1,localhost,u1,,)
|
|
--error ER_TABLEACCESS_DENIED_ERROR
|
select * from db.t1; |
--error ER_TABLEACCESS_DENIED_ERROR
|
explain select * from db.t1; |
--error ER_TABLEACCESS_DENIED_ERROR
|
analyze select * from db.t1; |
|
select * from db.v1; |
--error ER_VIEW_NO_EXPLAIN
|
explain select * from db.v1; |
--error ER_VIEW_NO_EXPLAIN
|
analyze select * from db.v1; |
|
--disconnect con1
|
--connection default
|
|
drop user u1@localhost; |
drop database db; |
The last statement should fail just like the previous one does, but it succeeds (and reveals the underlying t1 table in the output).
Same for INSERT, UPDATE, DELETE.
Attachments
Issue Links
Activity
Description |
{code:sql|title=Test case} --enable_connect_log create database db; use db; create table t1 (i int, c varchar(8)); insert into t1 values (1,'foo'),(2,'bar'),(3,'baz'),(4,'qux'); create view v1 as select * from t1 where i > 1; grant all on db.v1 to u1@localhost; --connect (con1,localhost,u1,,) --error ER_TABLEACCESS_DENIED_ERROR select * from db.t1; --error ER_TABLEACCESS_DENIED_ERROR explain select * from db.t1; --error ER_TABLEACCESS_DENIED_ERROR analyze select * from db.t1; select * from db.v1; --error ER_VIEW_NO_EXPLAIN explain select * from db.v1; --error ER_VIEW_NO_EXPLAIN analyze select * from db.v1; {code} The last statement should fail just like the previous one does, but it succeeds (and reveals the underlying t1 table in the output). |
{code:sql|title=Test case} --enable_connect_log create database db; use db; create table t1 (i int, c varchar(8)); insert into t1 values (1,'foo'),(2,'bar'),(3,'baz'),(4,'qux'); create view v1 as select * from t1 where i > 1; grant all on db.v1 to u1@localhost; --connect (con1,localhost,u1,,) --error ER_TABLEACCESS_DENIED_ERROR select * from db.t1; --error ER_TABLEACCESS_DENIED_ERROR explain select * from db.t1; --error ER_TABLEACCESS_DENIED_ERROR analyze select * from db.t1; select * from db.v1; --error ER_VIEW_NO_EXPLAIN explain select * from db.v1; --error ER_VIEW_NO_EXPLAIN analyze select * from db.v1; {code} The last statement should fail just like the previous one does, but it succeeds (and reveals the underlying t1 table in the output). |
Description |
{code:sql|title=Test case} --enable_connect_log create database db; use db; create table t1 (i int, c varchar(8)); insert into t1 values (1,'foo'),(2,'bar'),(3,'baz'),(4,'qux'); create view v1 as select * from t1 where i > 1; grant all on db.v1 to u1@localhost; --connect (con1,localhost,u1,,) --error ER_TABLEACCESS_DENIED_ERROR select * from db.t1; --error ER_TABLEACCESS_DENIED_ERROR explain select * from db.t1; --error ER_TABLEACCESS_DENIED_ERROR analyze select * from db.t1; select * from db.v1; --error ER_VIEW_NO_EXPLAIN explain select * from db.v1; --error ER_VIEW_NO_EXPLAIN analyze select * from db.v1; {code} The last statement should fail just like the previous one does, but it succeeds (and reveals the underlying t1 table in the output). |
{code:sql|title=Test case} --enable_connect_log create database db; use db; create table t1 (i int, c varchar(8)); insert into t1 values (1,'foo'),(2,'bar'),(3,'baz'),(4,'qux'); create view v1 as select * from t1 where i > 1; grant all on db.v1 to u1@localhost; --connect (con1,localhost,u1,,) --error ER_TABLEACCESS_DENIED_ERROR select * from db.t1; --error ER_TABLEACCESS_DENIED_ERROR explain select * from db.t1; --error ER_TABLEACCESS_DENIED_ERROR analyze select * from db.t1; select * from db.v1; --error ER_VIEW_NO_EXPLAIN explain select * from db.v1; --error ER_VIEW_NO_EXPLAIN analyze select * from db.v1; --disconnect con1 --connection default drop user u1@localhost; drop database db; {code} The last statement should fail just like the previous one does, but it succeeds (and reveals the underlying t1 table in the output). |
Summary | ANALYZE SELECT from a view does not check access permissions to the underlying table | ANALYZE SELECT/INSERT/UPDATE/DELETE from a view does not check access permissions to the underlying table |
Description |
{code:sql|title=Test case} --enable_connect_log create database db; use db; create table t1 (i int, c varchar(8)); insert into t1 values (1,'foo'),(2,'bar'),(3,'baz'),(4,'qux'); create view v1 as select * from t1 where i > 1; grant all on db.v1 to u1@localhost; --connect (con1,localhost,u1,,) --error ER_TABLEACCESS_DENIED_ERROR select * from db.t1; --error ER_TABLEACCESS_DENIED_ERROR explain select * from db.t1; --error ER_TABLEACCESS_DENIED_ERROR analyze select * from db.t1; select * from db.v1; --error ER_VIEW_NO_EXPLAIN explain select * from db.v1; --error ER_VIEW_NO_EXPLAIN analyze select * from db.v1; --disconnect con1 --connection default drop user u1@localhost; drop database db; {code} The last statement should fail just like the previous one does, but it succeeds (and reveals the underlying t1 table in the output). |
{code:sql|title=Test case} --enable_connect_log create database db; use db; create table t1 (i int, c varchar(8)); insert into t1 values (1,'foo'),(2,'bar'),(3,'baz'),(4,'qux'); create view v1 as select * from t1 where i > 1; grant all on db.v1 to u1@localhost; --connect (con1,localhost,u1,,) --error ER_TABLEACCESS_DENIED_ERROR select * from db.t1; --error ER_TABLEACCESS_DENIED_ERROR explain select * from db.t1; --error ER_TABLEACCESS_DENIED_ERROR analyze select * from db.t1; select * from db.v1; --error ER_VIEW_NO_EXPLAIN explain select * from db.v1; --error ER_VIEW_NO_EXPLAIN analyze select * from db.v1; --disconnect con1 --connection default drop user u1@localhost; drop database db; {code} The last statement should fail just like the previous one does, but it succeeds (and reveals the underlying t1 table in the output). Same for INSERT, UPDATE, DELETE. |
Summary | ANALYZE SELECT/INSERT/UPDATE/DELETE from a view does not check access permissions to the underlying table | ANALYZE SELECT/INSERT/UPDATE/DELETE from a view does not check access permissions on the underlying table |
Assignee | Sergei Petrunia [ psergey ] | Vicentiu Ciorbaru [ cvicentiu ] |
Status | Open [ 1 ] | In Progress [ 3 ] |
Assignee | Vicentiu Ciorbaru [ cvicentiu ] | Sergei Petrunia [ psergey ] |
Status | In Progress [ 3 ] | In Review [ 10002 ] |
Assignee | Sergei Petrunia [ psergey ] | Vicentiu Ciorbaru [ cvicentiu ] |
Status | In Review [ 10002 ] | Stalled [ 10000 ] |
Fix Version/s | 10.1.4 [ 18400 ] | |
Fix Version/s | 10.1 [ 16100 ] | |
Resolution | Fixed [ 1 ] | |
Status | Stalled [ 10000 ] | Closed [ 6 ] |
Component/s | OTHER [ 10125 ] |
Workflow | MariaDB v2 [ 58211 ] | MariaDB v3 [ 66959 ] |
Workflow | MariaDB v3 [ 66959 ] | MariaDB v4 [ 148414 ] |
review feedback provided over email