MySQL的test数据库默认权限
发布时间:2022-03-26 05:12:20 所属栏目:MySql教程 来源:互联网
导读:默认情况下,mysql.db表中包含的行表示任意用户可以访问test数据库和test_开头的数据库。这些行的User字段的值为空,表示匹配任意用户。这意味着这些数据库(test数据库和test_开头的数据库)默认可以被任意用户使用(即使没有权限的用户)。 mysql select *
默认情况下,mysql.db表中包含的行表示任意用户可以访问test数据库和test_开头的数据库。这些行的User字段的值为空,表示匹配任意用户。这意味着这些数据库(test数据库和test_开头的数据库)默认可以被任意用户使用(即使没有权限的用户)。 mysql> select * from mysql.dbG Host: % Db: test User: Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Grant_priv: N References_priv: Y Index_priv: Y Alter_priv: Y Create_tmp_table_priv: Y Lock_tables_priv: Y Create_view_priv: Y Show_view_priv: Y Create_routine_priv: Y Alter_routine_priv: N Execute_priv: N Event_priv: Y Trigger_priv: Y *************************** 2. row *************************** Host: % Db: test_% User: Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Grant_priv: N References_priv: Y Index_priv: Y Alter_priv: Y Create_tmp_table_priv: Y Lock_tables_priv: Y Create_view_priv: Y Show_view_priv: Y Create_routine_priv: Y Alter_routine_priv: N Execute_priv: N Event_priv: Y Trigger_priv: Y 2 rows in set (0.00 sec) 可以看到,任意用户对test数据库和test_开头的数据库都拥有很大的权限(上述为Y的权限) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) mysql> show grants for 'select'@'localhost'; +--------------------------------------------------------------------------------------------------------- | Grants for select@localhost | +--------------------------------------------------------------------------------------------------------- | GRANT USAGE ON *.* TO 'select'@'localhost' IDENTIFIED BY PASSWORD '*852200EDF18814F8BFC1F1DC816AAC4152D8262E' | GRANT SELECT ON `yujx`.`t` TO 'select'@'localhost' | +------------------------------------------------------------------------------------------------- 2 rows in set (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | test_a | | yujx | +--------------------+ 3 rows in set (0.00 sec) #同样适用于test_开头的库 mysql> use test_a Database changed mysql> create table a ( x int); Query OK, 0 rows affected (0.01 sec) mysql> drop database test_a; Query OK, 0 rows affected (0.00 sec) #delete from mysql.db where db like 'test%' 如果你不想让拥有任意权限(哪怕仅仅只读权限)的用户能任意操作test数据库或者以test_开头命名的数据库,可以delete其mysql.db表中test相关的行,如下: shell> mysql -u root -p Enter password: (enter root password here) mysql> DELETE FROM mysql.db WHERE Db LIKE 'test%'; mysql> FLUSH PRIVILEGES; mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | yujx | +--------------------+ 2 rows in set (0.00 sec) 至此,可以看到默认情况下,初始化的mysql环境中mysql.db表默认包含的2行test数据库相关的配置,导致任意用户可以随意操作test或者test_开头的数据库,如果你想避免此问题,可以直接drop test数据库。 (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |