目录
用户管理
如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用MySQL的用户管理。
用户
用户信息
MySQL中的用户,都存储在系统数据库mysql的user表中,MySQL进行用户管理的时候就是使用表结构来进行管理的,我们可以直接看到
在文件夹也可以直接看到,我们发现会有很多张表存放在MySQL这个文件夹中
查看用户信息
我们可以直接对user表进行修改,但是不推荐
创建用户
语法:
create user '用户名'@'登陆主机/ip' identified by '密码';
注意关于权限的修改,每一次修改权限之后,应该进行刷新
flush privileges;
我们现在都知道,这里面的密码MySQL都是进过加密的,使用的函数是password()。
这里的账号只能够使用本地登入,要想其他地方也能够登入的话,登入要改为'%'
--备注:可能实际在设置密码的时候,因为mysql本身的认证等级比较高,一些简单的密码无法设置,会爆出如下报错:
-- ERROR 1819 (HY000): Your password does not satisfy the current policyrequirements
-- 解决方案:Your password does not satisfy the current policy requirements-CSDN博客
--查看密码设置相关要求:SHOW VARIABLES LIKE 'validate_password%';
本地登入测试
显然这里是啥也没有的
异地登入测试
不能的,因为只允许本地进行登入
只限于本地登入
我们创建一个允许远端登入的用户,在登入主机中,使用'%'
可以发现登入成功了,并且我们可以进行数据库的相关操作
这里特别不建议允许容易客户端访问MySQL,不安全!
删除用户
语法:
drop user '用户名'@'主机名'
修改用户密码
语法:
set password=password('新的密码');
这里的password是MySQL提供的一个生成加密的函数,我们可以用这个来进行加密密码
root用户修改指定用户的密码
set password for '用户名'@'主机名'=password('新的密码');
数据库的权限
权限如下图所示,我们对数据库权限的管理就是对下面这些数据的修改
准备工作
为了方便演示,我们新创建一个用户用来观察不同的情况下权限带来的结果
本地登入
远端登入
给用户授权
刚创建的用户没有任何权限。需要给用户授权。
grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']
这里的密码在创建用户的时候就已经给定了,所以不需要再指定了,当然如果没有的话,也可以在这里指明,不过通常不推荐
说明:
1.权限列表,多个权限用逗号分开
grant select on ...
grant select, delete, create on ....
grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限
2.*.* :代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
3.库.* :表示某个数据库中的所有数据对象(表,视图,存储过程等)
4. identified by可选:如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户
root创建数据库
当我们用root创建一个数据库的时候,会发现无论是本地还是远端都无法看到这个数据库,这是很正常的,因为我们并没有给权限
当本地用户尝试进入数据库的时候,发现无法进入,没有权限
root创建表,并插入数据
给定权限
插入操作也可以进行
我们可以查看最近赋予的权限,这里会以SQL语句的形式呈现
回收权限
语法:
revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';
回收它的insert权限
我们发现,我们可以进行删除,查看,但是插入却不能够了
当然远端也是不能够使用的
回收所有的权限
当我们回收所有权限后,无论是本地还是远端都看不到了