mysql——用户管理
我们前面所有的演示,都是基于root账号登录的,但如果我们只允许root进行登录,会存在许多安全隐患,这时就需要mysql的用户管理,允许不同的用户登录以及赋予不同的权限。
mysql的用户信息
mysql的用户信息存放在一个名为user的表中(在sys库)
我们筛选一下条件看一下:
中间列就是允许登录的用户名,左边的host表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆。右侧的长列是经过password加密后的用户密码。
创建用户
语法:
create user '用户名'@'登陆主机/ip' identified by '密码';
我们创建一个名为zhangsan的用户,只能本机登录,密码是123456.
如果要允许任何端登录就修改为@‘%’
这样我们就可以在本机另一个终端用zhangsan的账号进行登陆了
删除用户
语法:
drop user '用户名'@'主机名' (主机名就是host那列)
我们的zhangsan一会还要用,这里就不显示了。
修改密码
修改自己的密码
set password=password('新的密码');
修改指定用户密码(由root来修改)
SET PASSWORD FOR 'username'@'host' = 'new_password';
可以看到zhangsan的密码和上面不一样了。
数据库的权限
这里常用的实验无非就是CURD,我们下面来演示一下效果。
先说一下,如果我们新创建一个用户,这个用户的权限不会像root那么高
我们之前演示的库(root创建的)和系统库对用户来讲都是不可见的,但我们可以通过赋予权限看到。
给用户授权
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置'
权限列表包括select insert delete等,如果要赋予全部权限直接写all即可。
查看某用户的权限
show grants for '用户名'@'主机名称';
这下zhangsan就可以看到user1的表了。
而且,zhangsan拥有对user1的所有权限,能够像root一样对user1进行CURD,我们演示一下删除其某一权限后的操作。
回收权限
语法:
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';
我们把zhangsan的insert的权限回收了发现其确实无法插入了,想让其失去其他权限回收即可。
注:如果赋权限或回收权限命令执行后发现没有生效,执行如下指令刷新即可:
flush privileges;