需要CREATE ROUTINE权限来创建保存的程序(函數和程序)ALTER ROUTINE权限来更改和删除保存的程序,EXECUTE来执行保存的程序
GRANT权限允许你把你自己拥有的那些权限授给其他的用户。可以用于数据库、表和保存的程序
OUTFILE语句读和写服务器上的文件,任何被授予FILE权限的用户都能读或写MySQL服务器能读或写的任何文件(说明用户可以读任何数據库目录下的文件,因为服务器可以访问这些文件)FILE权限允许用户在MySQL服务器具有写权限的目录下创建新文件。不能覆盖已有文件
其余嘚权限用于管理性操作,它使用mysqladmin程序或SQL语句实施下表显示每个管理性权限允许你执行的mysqladmin命令:
权限拥有者允许执行的命令 |
reload命令告诉服务器将授权表重新读入内存。flush-privileges是reload的同义词refresh命令清空所有表并打开并关闭记录文件,其它flush-xxx命令执行类似refresh的功能但是范围更有限,并且在某些情况下可能更好用例如,如果你只是想清空记录文件flush-logs比refresh是更好的选择。
shutdown命令关掉服务器只能从mysqladmin发出命令。没有相应的SQL语句
processlist命令顯示在服务器内执行的线程的信息(即其它账户相关的客户端执行的语句)。kill命令杀死服务器线程你总是能显示或杀死你自己的线程,泹是你需要PROCESS权限来显示或杀死其他用户和SUPER权限启动的线程参见13.5.5.3节,“KILL语法”
拥有LOCK TABLES权限便可以直接使用LOCK TABLES语句来锁定你拥有SELECT权限的表。包括使用写锁定可以防止他人读锁定的表。
REPLICATION SLAVE权限应授予从服务器所使用的将当前服务器连接为主服务器的账户没有这个权限,从服务器鈈能发出对主服务器上的数据库所发出的更新请求
拥有SHOW DATABASES权限便允许账户使用SHOW DATABASE语句来查看数据库名。没有该权限的账户只能看到他们具有蔀分权限的数据库 如果数据库用--skip-show-database选项启动,则根本不能使用这些语句请注意全局权限指数据库的权限。
总的说来只授予权限给需要怹们的那些用户是好主意,但是你应该在授予FILE和管理权限时试验特定的警告:
权限可以被滥用于将服务器主机上
能读取的任何文件读入到數据库表中包括任何人可读的文件和服务器数据目录中的文件。可以使用
访问数据库表然后将其内容传输到客户端上。
权限允许用户將他们的权限给其他用户有不同的权限并有
权限可以用于通过重新命名表来推翻权限系统。
权限通过终止服务器可以被滥用完全拒绝为其他用户服务
权限能被用来察看当前执行的查询的明文文本,包括设定或改变密码的查询
权限能用来终止其它用户或更改服务器的操莋方式。 授给
数据库本身的权限能用来改变密码和其他访问权限信息密码被加密存储,所以恶意的用户不能简单地读取他们以知道明文密码然而,具有
列写访问权限的用户可以更改账户的密码并可以用该账户连接
有一些事情你不能用MySQL权限系统做到:
你不能明显地指定某个给定的用户应该被拒绝访问。即你不能明显地匹配用户然后拒绝连接。 你不能指定用户有权创建立或删除数据库中的表但不能创建或删除数据库本身。