在操作数据库的时候多数都在gui下操作,但是实际数据库怎么执行的还是不太清楚,特别是在linux下权限都不是那么严格,在mysql下查看当前用户权限的语句:
show grants for user;
我们可以以下来进行设置权限:
grant 权限 on 数据库 to 用户;
如此我们便可以手工设置权限了,若是觉得很麻烦那就写一个shell脚本来帮助我们执行吧,很简单,现在我们来看看如何搭配权限才是更安全的。首先列出数据库可以设置的权限以及相对于的含义:
数据库/数据表/数据列权限:
Alter: 修改已存在的数据表(例如增加/删除列)和索引。
Create: 建立新的数据库或数据表。
Delete: 删除表的记录。
Drop: 删除数据表或数据库。
INDEX: 建立或删除索引。
Insert: 增加表的记录。
Select: 显示/搜索表的记录。
Update: 修改表中已存在的记录。
全局管理权限:
file: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。
特别的权限:
ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录–其它什么也不允许做。
我们通过上面就能可以知道数据库的权限主要分为3大类,数据库权限、全局权限、特别权限,我们首先要给予用户对特定数据库的所有权限,全局可以视情况而给,个人建议都不要给,特别权限我们必须给usage权限,否则用户无法登陆数据库,这是一个很麻烦的事情,如果在linux在设置数据库权限,建议不要用phpmyadmin来进行用户创建和管理(普通用户使用除外),phpmyadmin给予权限的时候捆绑了一些其他权限操作,并不是那么的透明,当然是你在特别注重安全的情况下。