Loading mysql-test/r/alter_table.result +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading mysql-test/r/grant_cache.result +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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"; Loading sql/sql_acl.cc +50 −51 Original line number Diff line number Diff line Loading @@ -2256,6 +2256,8 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list, DBUG_RETURN(-1); } if (!revoke_grant) { if (columns.elements && !revoke_grant) { TABLE *table; Loading @@ -2267,19 +2269,25 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list, while ((column = column_iter++)) { 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)) 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; } close_thread_tables(thd); } else if (!(rights & CREATE_ACL) && !revoke_grant) else { if (!(rights & CREATE_ACL)) { char buf[FN_REFLEN]; sprintf(buf,"%s/%s/%s.frm",mysql_data_home, table_list->db, Loading @@ -2291,6 +2299,17 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list, 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); } } } /* open the mysql.tables_priv and mysql.columns_priv tables */ Loading Loading @@ -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, Loading Loading @@ -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), Loading Loading
mysql-test/r/alter_table.result +1 −1 Original line number Diff line number Diff line Loading @@ -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; Loading
mysql-test/r/grant_cache.result +3 −3 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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 Loading @@ -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"; Loading
sql/sql_acl.cc +50 −51 Original line number Diff line number Diff line Loading @@ -2256,6 +2256,8 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list, DBUG_RETURN(-1); } if (!revoke_grant) { if (columns.elements && !revoke_grant) { TABLE *table; Loading @@ -2267,19 +2269,25 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list, while ((column = column_iter++)) { 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)) 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; } close_thread_tables(thd); } else if (!(rights & CREATE_ACL) && !revoke_grant) else { if (!(rights & CREATE_ACL)) { char buf[FN_REFLEN]; sprintf(buf,"%s/%s/%s.frm",mysql_data_home, table_list->db, Loading @@ -2291,6 +2299,17 @@ int mysql_table_grant(THD *thd, TABLE_LIST *table_list, 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); } } } /* open the mysql.tables_priv and mysql.columns_priv tables */ Loading Loading @@ -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, Loading Loading @@ -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), Loading