mysql 授权管理

本文从创建一个数据库说起:

1,创建一个数据库

 CREATE  DATABASE IF NOT EXISTS you_dbname DEFAULT CHARSET utf8 CALLATE utf8_general_ci;

2,访问控制介绍:

MySQL 服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权限,既不能多也不能少。换句话说,用户不能对过多的数据具有过多的访问权限。

需要考虑的有以下内容:

  多数用户需要对表进行读写,但少数用户甚至需要创建和删除表;

  默写用户需要毒镖,但可能不需要更新表;

  你可能向允许用户添加数据,但不允许他们删除数据;

  某些用户(管理员)可能需要处理用户账号的权限,但多数用户不需要;

  你可能像根据用户的登录地点限制对某些功能的访问;

MySQL 的用户信息存储在MySQL的mysql 数据库中

可以通过   以下2个命令来查看所有的用户

   use mysql;

  select user from user;

 创建新用户:

 CREATE USER  username IDENTIFIED BY 'PASSWD';(为安全起见,一般不建议直接这样操作用户表)[注1]

 重新命名一个用户账号

 RENAME USER newname TO oldname;

 删除用户账号

 DROP USER username; //删除用户的账号以及相关的权限,如果使用MySQL5 以前的版本,则不能删除相关权限需要先用revoke 删除账号相关的权限,然后执行该条命令即可。

设置访问权限

 创建用户账号之后,必须分配权限访问。否则,新用户无法使用数据库

 a, 查看用户的权限

  show GRANTS FOR username

 b,授权三要素

  要授予的权限,被授予权限的数据库和表,用户名

 用法实例:

   GRANT select ON dbname.* To username;

 授权所有用户名为username 的用户查询数据库dbname  下的所有表的权限。

 GRANT 的反操作为

  REVOKE SELECT ON dbname.* FROM username;

 GRANT 和REVOKE 可在以下几个层次上控制访问权限:

  整个服务器,使用GRANT ALL和REVOKE ALL;

  整个数据库,使用ON database.*;

 特定的表 ,使用 ON database.table;

  特定的列;

 特定的存储过程;

 权限列表:

用户授权完成之后并不是立即生效,需要通过执行:

 flush privileges;

 注1:

  通常采用用户创建和授权同时进行,命令如下

  

     GRANT (权限列表) ON db.table TO username@HOSTNAME  IDENTIFIDE BY 'PASSWD';

   插图和部分内容摘自:《MySQL必知必会》 文章系读书笔记系列。

posted @ 2014-04-18 12:56  minbbp  阅读(165)  评论(0编辑  收藏  举报