用户管理

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;
最后修改:2023 年 12 月 30 日
如果觉得我的文章对你有用,请随意赞赏