mysql用户管理
1、用户权限管理
用户权限管理:在不同的项目中给不同的角色(开发者)不同的操作权限,为保证数据库的数据安全。
通常一个用户的密码不会长期不变,所以要经常性变更数据库用户的密码来确保用户本身安全(mysql客户端用户)。
2、用户管理
MySQL需要客户端进行连接认证,才能进入服务端操作;需要用户信息。Mysql中的所有的用户信息,都保存在mysql数据库中的user表中。
默认的,如果在安装mysql的时候,如果不创建匿名用户,意味着所有的用户只有一个:root根超级用户。
在mysql中,对用的用户管理中,是由对应的host和user共同组成主键来区分用户。
User:代表用户的用户名
Host:代表本质是允许访问的客户端(IP或主机地址)。如果host使用*代表所有用户的客户端都可以访问。
1、创建用户
理论上有两种的创建用户方式
-1、直接使用root用户在mysql.user表中插入用户记录(不推荐使用)
-2、mysql提供专门创建用户的SQL指令。
基本语法:create user 用户名 identified by ‘密码’;
用户名:用户名@主机地址
主机地址:‘/’ ‘%’
-- 创建用户
create user 'lice'@'%' identified by '123456';
2、删除用户
注意:mysql中user是带着host本身的(具有唯一性),如果用户不限定,可以不带host。
基本语法:drop user 用户名@host;
-- 删除用户
drop user lice@host;
drop user lice;
3、修改用户密码
Mysql中提供多种修改用户密码 的方式:基本上都必须使用对应提供的一个系统函数:password(),需要这个函数来对用户密码进行加密处理。
基本语法:set password for 用户 = password(‘密码’);
-- 修改用户密码
set password for 'lice'@'%' = password('147258');
3、权限管理
Mysql中权限管理中,将权限管理分为三类:
– 1、数据权限,增删改查(select/update/delete/insert)
–2、结构权限,结构操作(create /drop)
– 3、管理权限,权限管理(create user /grant/revoke)
一般只给前面两种权限给用户,第三种是给管理员的。
1、授予权限:grant
基本语法:grant 权限列表 on 数据库/.表名/ to 用户;
权限列表:使用逗号隔开,但可以使用all privilege 代表全部权限
数据库.表名:可以使用单表 (数据库.表名),可以是具体某个数据库(数据库.),也可以是整库(.*)。
-- 分配查看my_student权限
grant select on mysql.my_student to 'lice'@'%';
grant select,insert,delete,update on mysql.my_student to 'lice'@'%';
grant create,drop on mysql.my_student to 'lice'@'%';
2、取消权限:revoke
基本语法:revoke 权限列表/all privilege on 数据库/.表/ from 用户;
-- 取消权限
revoke all privilege on mysql.my_student from 'lice'@'%';
3、刷新权限:flush
基本语法:flush privileges ;
4、找回丢失的密码
如果忘记root根用户密码
解决方案:需要找回或重置root用户密码
1、停止服务:net stop mysql;
2、重新启动服务:mysql.exe --skip-grant-tables; //启动服务器,但跳过权限管理
3、当前启动的服务器是没有权限的,任何用户都可以使用root用户登录进去。
4、修改root用户密码:指定 用户名@host
Update mysql.user set password = password(‘密码’);
5、关闭服务
6、重启服务 net start mysql;