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必知必会》 文章系读书笔记系列。