mysql的用户管理
一个mysql用户包含账户名@机器名 密码,3个部分;
mysql支持的权限类型:管理权限包括,create temporary tables,create user,file,lock tables,process,reload,replication client,replication slave,show databases,shutdown,super;
数据库访问权限:alte,alter routine,create,create routine,create view,delete,drop,execute,grant option,index,insert,select,show view,update;
mysql的一些特殊权限:all 和all privileges这个是all privilieges except grant option的缩写。又有这个权限的用户对数据可以进行任何操作,但是,他不能把自己的权限授予其他人;usage是没有权限,这个允许用户连接数据库服务器,他们只能使用show variables,show stauts查看系统的一些状态;
授权级别:
全局权限,可以对数据服务器其中所有数据进行操作;
数据库权限,可以对数据库进行操作,alter,create,create temporary tables,create view,delete,drop,grant option,index,insert,lock tables,select,show view,and update;
表权限,只能对表进行操作,alter,create,delete,drop,grant option,index,insert,select,and update
列权限,只能对列进行操作,insert,select and  update
存储过程和函数的权限,execute,alter routine,and grant option;
授权表:
user表:存放在mysql表中,记录mysql server的所有账户,也存放一些全局的权限,存放了一些资源限制信息,可以通过修改这个表里的某个列,来限制一个用户所使用的资源。对ssl的控制,在这个表里也有体现。
db表:存放数据库级别的权限
table_priv:存放表级别的权限
columns_priv:存放列级别的权限
proce_priv:存放存储过程和函数的权限

mysql启动的时候将授权信息全部载入内存,形成一个内存拷贝
当使用一下命令的时候需要内存刷新,才能生效,create user,grant,revoke or set password;可以使用一个flush privileges的语句或执行一个mysqladmin flush-privileges 或 mysqladmin reload 命令;
创建账户:create user 'jim'@'localhost' identified by '123';   删除账户:drop user  'jim'@'localhost'

granting Privileges
用户的授权语句结构
授权什么权限
权限级别
被授予的账户是谁
(可选项)密码
grant select on test.* to 'jack'@'localhost' identified by 'jack'; 执行这条命令后,用户会被自动创建;

权限级别
on *.*
on database.*
on database_name.table_name

show grant for 'jack'@'localhost'
grant create,insert  on test1.* to 'jack'@'localhost'
grant select (table_name,engine) one test1.t to 'jack'@'localhost'
set password for 'jack'@'localhost' =password('jack');
flush prinvileges;

撤销权限
revole select (table_name) on 'test'.t from 'jack'@localhost
改变密码
set password from 'jim'@'localhost'=PASSWOR('NewPass');

资源限制:
grant all privileges on *.* to  'jack@localhost' whth MAX_QUERISE_PER_HOUR= 2 设定,用户对多登录数据库的次数不到错而,最多只能有1的管理。。