扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
权限信息用user、db、host、tables_priv和columns_priv表被存储在mysql数据库中(即在名为mysql的数据库中)。在MySQL启动时和在6.9 权限修改何时生效所说的情况时,服务器读入这些数据库表内容。
本手册所用的涉及由MySQL提供的权限名称显示在下表,还有在授权表中每个权限的表列名称和每个权限有关的上下文:
| 权限 | 列 | 上下文 |
| select | Select_priv |
表 |
| insert | Insert_priv |
表 |
| update | Update_priv |
表 |
| delete | Delete_priv |
表 |
| index | Index_priv |
表 |
| alter | Alter_priv |
表 |
| create | Create_priv |
数据库、表或索引 |
| drop | Drop_priv |
数据库或表 |
| grant | Grant_priv |
数据库或表 |
| references | References_priv |
数据库或表 |
| reload | Reload_priv |
服务器管理 |
| shutdown | Shutdown_priv |
服务器管理 |
| process | Process_priv |
服务器管理 |
| file | File_priv |
在服务器上的文件存取 |
select、insert、update和delete权限允许你在一个数据库现有的表上实施操作。
SELECT语句只有在他们真正从一个表中检索行是才需要select权限,你可以执行某个SELECT语句,甚至没有任何到服务器上的数据库里的存取任何东西的许可。例如,你可使用mysql客户作为一个简单的计算器:
mysql> SELECT 1+1; mysql> SELECT PI()*2;
index权限允许你创建或抛弃(删除)索引。
alter权限允许你使用ALTER TABLE。
create和drop权限允许你创建新的数据库和表,或抛弃(删除)现存的数据库和表。
注意:如果你将mysql数据库的drop权限授予一个用户,该用户能抛弃存储了MySQL存取权限的数据库!
grant权限允许你把你自己拥有的那些权限授给其他的用户。
file权限给予你用LOAD DATA INFILE和SELECT ... INTO OUTFILE语句读和写服务器上的文件,任何被授予这个权限的用户都能读或写MySQL服务器能读或写的任何文件。
其余的权限用于管理性操作,它使用mysqladmin程序实施。下表显示mysqladmin支配每个管理性权限允许你执行的命令:
| 优惠 | 权限拥有者允许执行的命令 |
| reload | reload, refresh, flush-privileges, flush-hosts, flush-logs, flush-tables |
| shutdown | shutdown |
| precess | processlist, kill |
reload命令告诉服务器再读入授权表,refresh命令清洗所有表并打开和关闭记录文件,flush-privileges是reload的一个同义词,其它flush-*命令执行类似refresh的功能,但是范围更有限,并且在某些情况下可能更好用。例如,如果你只是想清洗记录文件,flush-logs比refresh是更好的选择。
shutdown命令关掉服务器。
processlist命令显示在服务器内执行的线程的信息。kill命令杀死服务器线程。你总是能显示或杀死你自己的线程,但是你需要process权限来显示或杀死其他用户启动的线程。
总的说来,只授予权限给需要他们的那些用户是一个好主意,但是你应该在授予某个权限时试验特定的警告:
SELECT被存取。
mysql数据库上的权限能被用来改变口令和其他存取权限信息。(口令被加密存储,所以一个恶意的用户不能简单地读取他们。然而,有足够的权限,同一个用户能用不同的一个代替一个口令。) 有一些事情你不能用MySQL权限系统做到:
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。