在数据库中,如果我们只能使用root用户,这样是存在安全隐患的。
如果有人要访问你的数据库,而只有root用户可以访问,那么你就得把root的账户密码给他,一旦别人登录上你的数据库之后,将可以随意操纵你的数据库,岂不是很危险!!!
这时,就需要使用mysql的用户管理,张三只能操纵mytest这个库,李四只能操纵msg数据库。有效规避了数据泄露的隐患^-^
一、用户
1.1 查看MySQL数据库中所有用户
MySQL中的用户,都存储在系统数据库mysql的user表中
字段解释:
host:表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆
user:用户名
authentication_string:用户密码通过password函数加密后的
1.2 查询具体用户权限
show grant for '用户名'@'host';
(上面的意思是:给这个root用户操作root数据库的所有权限;)
1.3 创建用户
create user '用户名'@'登陆主机/ip' identified by '密码';
查询当前用户,可以看到增加了一个zhangsan用户:
1.4 删除用户
drop user '用户名'@'主机名';
效果如下图:
错误示例:直接给用户名是不能够删除的,此时默认的登录主机是任意地方,即%,表示任意地方都可以登录的用户,显然是不能正确删除了的。
1.5 修改用户密码
(1)自己改自己密码
set password =password('新的密码');
(2)root用户修改指定用户的密码
set password for '用户名'@'主机名' =password('新密码');
for example:
set password for 'zhangsan'@'localhost' =password('123456');
二、数据库权限
MySQL数据库提供的权限列表:
_priv:用户拥有的权限;
2.1 给用户授权
刚创建的用户没有任何权限。需要给用户授权。
语法:
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码'];
--赋予所写权限的权限
grant all [privileges] on 库.对象名 to '用户名'@'登陆位置' [identified by '密码'];
--赋予所有权限
identified by :可选,如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户
授权步骤:
(1)查询自己的数据库下面有哪些数据库(zhangsan用户看不到user1数据库)
(2)赋予新建用户‘zhangsan’查询user1.student表的权限
(3)zhangsan用户可以看到user1数据库
(4)可查询user1数据库下的student表
(5)进行删除操作,可发现,不能删除,因为没有删除权限
注意:如果发现赋权限后,没有生效,执行如下指令:
flush privileges;
2.2 回收权限
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';
———————————————————————————————————————————————————————— 补充:
*.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等);
库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)