用户管理
mysql验证密码需要验证3个维度:用户名、密码、ip。当3个维度存在不正确的时候,会提示access denied。
mysql的用户表是在mysql数据库下的user表,最好不要直接去修改该表。
创建用户
mysql5.6和5.7都可以这样创建用户,创建完之后就可以用这个用户进行连接了
-- 所有的网都可以访问
create user 'david'@'%' identified by '03203511';
-- 内网段可以访问
create user 'david'@'192.168.1.%' identified by '03203511';
-- 没有identified代表是空的密码
create user 'david'@'192.168.1.%';
默认创建的用户,只有连接的权限,创建用户就会有连接权限,这个是最小的权限吧
show grants for 'test'@'%';
-- GRANT USAGE ON *.* TO 'test'@'%',这个usage,代表连接的权限
删除用户
5.6和5.7都可以这样删除用户
drop user 'david'@'%';
执行这个语句之后,只有针对新的连接有效,已经连接的不会退出
修改密码
mysql5.7修改密码,该条语句对于mysql5.6无效
alter user 'test'@'%' identified by '03203512';
mysql5.6 版本使用这个修改密码
SET PASSWORD FOR 'david'@'%' = PASSWORD('mypass');
权限管理
增加权限
授予所有的权限
grant all on *.* to 'root'@'%';
授予增删改查的权限
-- 给test库,test用户授予权限
-- create 创建表
-- index 创建索引的权限
grant select,update,insert,delete,create,index on test.* to 'test'@'%';
设置权限的时候,顺道创建用户,了解即可,不推荐这样,最好的做法是,先创建,然后授权
grant select,update,insert,delete on test.* to 'test1'@'%' identified by '03203511';
分享自己已有的权限给别人,自己没有的权限不可以分享,了解即可
grant select,update,insert,delete,create,index on test.* to 'test'@'%' with grant option;
删除权限
-- 收回create,index权限
revoke create,index on test.* from 'test'@'%';
-- 回收所有的权限,只剩下usage的登录权限
revoke all on test.* from 'test'@'%';
限制资源
使用的场景不多,了解即可
max_user_connections,限制该用户同时进行多少个连接
-- test账号,最多只能有一个在线
alter user 'test'@'%' with max_user_connections 1;
max_connections_per_hour:限制一个小时最多能够连接的次数
alter user 'test'@'%' with max_connections_per_hour 1;
max_updates_per_hour:限制每小时最多能够执行update是次数
alter user 'test'@'%' with max_updates_per_hour 1;
max_querys_per_hour:限制每小时最多能够查询的次数
alter user 'test'@'%' with max_queries_per_hour 1;