【MySql】用户安全管理


为了保证MySql服务器的安全,每个MySql的用户应该对他们需要的数据具有适当的访问权。

例如:

  1. 多数用户只能够用到读写权限,只有少数用户能够创建表格和删除表格。
  2. 一些用户只能访问某个数据库而不能访问其他的数据库。
  3. 一些用户可以管理其他用户的账号,但大多数人不需要管理别人的账号

每个用户需要用到什么权限,就只给他们什么权限,如果每个用户的权限都很高,那数据库会变得十分危险,随时都需要面临很多误操作,比如一些删库提桶跑路的操作,,,所以要进行访问权限控制。

1. 用户账号存储

在MySql下,所有的用户的账号,密码,对数据库的操作权限,都存储在mysql下(数据库的名字就叫mysql)的user表格中,user表格有一个user属性,user属性就是当前所有的用户名,通过以下操作可以查看当前mysql的用户一共有多少

use mysql
select user from user

当前的用户如下:

image-20210812202141043

2. 创建用户账号

既然mysql中的user表格中存放着当前mysql的用户,那么新增用户只需要在user表中使用insert语句新增一条记录即可,不过为了安全起见不建议这样做,mysql数据库存放着很重要的数据,这样直接对mysql数据库直接操作可能会伤害到mysql服务器。

2.1 新增用户
  • 新增一个用户语法:
CREATE USER [user_name] IDENTIFIED BY [user_pwd]

例如新增一个用户张三,密码123456

CREATE USER 张三 IDENTIFIED BY '123456'
2.2 修改用户名
  • 对用户重命名的语法:
RENAME USER [user_name] TO [new_user_name]

例如将账号名从张三改为李四

RENAME USER 张三 TO 李四
2.3 修改用户密码
  • 修改用户密码语法:
SET PASSWORD FOR [user_name] = Password('[new_pwd]')

这里使用password函数对新密码进行加密,新密码必须加密

  • 如果不指定用户名:
SET PASSWORD = Password('[new_pwd]')

默认为修改当前登陆的用户的密码。

例如修改李四账号的密码:

SET PASSWORD FOR 李四 = Password('135790')

3. 删除用户账号

  • 如果一个用户离开了公司,需要把该用户的账号删除,使用以下语法:
DROP USER [user_name]

张三离职,删除张三的账号:

DROP USER 张三

如果mysql版本低于mysql5,需要先revoke用户所有的权限,才能删除账号。更高版本则可以一次性删除权限和账号。

4. 用户权限控制

4.1 查看用户权限
  • 刚创建的的用户是没有任何权限的,使用以下语法查看某用户所拥有的权限:
SHOW GRANTS FOR [user_name]
image-20210812210127326

GRANT USAGE ON *.* TO 'lS'@'%'则代表了用户ls没有任何权限。

4.2 授权
  • 给用户授权的语法
GRANT [权限名] ON [数据库名].[表名] TO [用户名]

例如给用户ls 查找权限select

image-20210812210950643

从表格中可以看到ls新增的权限。

4.3 撤销授权
  • 撤销用户权限的语法:
REVOKE [权限名] ON [数据库名].[表名] FROM [用户名]

例如收回用户 ls 查找权限 select

image-20210812211333176

从表格中可以看初 ls 新增的权限消失了。

猜你喜欢

转载自blog.csdn.net/qq_45978890/article/details/119654058