• 【MySQL】用户管理


    目录

    MySQL用户管理

    用户

    用户信息

    创建用户

    修改用户密码

    删除用户

    数据库的权限

    MySQL中的权限

    给用户授权

    回收权限


    MySQL用户管理

    • 与Linux操作系统类似,MySQL中也有超级用户和普通用户之分。
    • 如果一个用户只需要访问MySQL中的某一个数据库,甚至数据库中的某一个表,那么可以为其创建一个普通用户,并为该用户赋予对应的权限,而不让该用户看到数据库中的其他数据,防止该用户对其他数据进行误操作。

    用户

    用户信息

    用户信息

    MySQL当中默认有一个名为mysql的数据库。如下:

    查看该数据库中的表,可以看到其中有一个名为user的表。如下:

    user表中存储的就是MySQL中用户相关的信息。如下:

    部分字段说明:

    • user: 表示该用户的用户名。
    • host: 表示该用户可以从哪个主机登录,localhost表示只能从本机登录,%表示可以从任意地方登录。
    • authentication_string: 表示该用户的密码经过password函数加密后的值。
    • xxx_priv: 表示该用户是否拥有对应权限。

    在查看用户信息时为了避免刷屏,可以只选择其中的部分字段进行显示。如下:

    需要注意的是,MySQL中可以存在同名的用户,只要这些同名用户对应的登录主机不同即可,因为user表中的主键是复合主键,由表中的user列和host列共同承担。如下:

    创建用户

    创建用户

    创建用户的SQL如下:

    CREATE USER '用户名'@'登录主机' IDENTIFIED BY '密码';
    

    比如下面创建一个用户名为dragon,并且可以从任意地方登录的用户。如下:

    创建用户成功后,该用户的相关信息也就被写入到刚才的user表中了。如下:

    这时便可以用新创建的普通用户来连接MySQL服务器了。如下:

    此外,由于我们创建的这个用户可以从任意地方登录,因此如果你在Windows下也安装了MySQL,那么就可以在Windows的cmd窗口进行远程登录。如下:

    说明一下:

    • 创建用户的SQL当中包含用户的密码,因此该SQL不会被历史记录下来,所以不能通过上下键进行追溯。
    • MySQL本身的认证级别比较高,因此创建用户时设置的密码不能太简单,否则会出现报错,这时你可以选择将密码设置复杂一些,也可以对密码相关的设置进行调整。

    通过show命令查看全局变量,可以看到密码设置相关的要求。如下:

    修改用户密码

    用户自己修改自己的密码

    用户可以自己通过调用password函数,将新密码加密后的值设置到自己password当中。如下:

    超级用户修改任意用户的密码

    超级用户可以通过调用password函数,将新密码加密后的值设置到指定用户的password当中。如下:

    删除用户

    删除用户

    删除用户的SQL如下:

    DROP USER '用户名'@'登录地址';

    比如将刚才创建的用户删除后,该用户在user表中对应的记录也就不存在了。如下:

    说明一下:

    • 删除用户时如果不指明待用户的登录地址,则默认删除的是登录地址为%的用户。

    数据库的权限

    MySQL中的权限

    MySQL中的权限

    MySQL数据库提供的权限如下:

    需要注意的是,新创建的用户没有任何权限,因此创建用户后需要给用户授权。

    给用户授权

    给用户授权

    给用户授权的SQL如下:

    GRANT 权限列表 ON 库名.对象名 TO '用户名'@'登录地址' [IDENTIFIED BY '密码'];

    说明一下:

    • '用户名'@'登录地址':表示给哪一个用户授权。
    • 库名.对象名表示要授予用户哪个数据库下的哪个对象的权限。
    • 权限列表:表示要授予用户何种权限,多个权限之间用逗号隔开。
    • IDENTIFIED BY '密码'可选:如果用户存在,则在授予权限的同时修改该用户的密码,如果用户不存在,则创建该用户。

    比如下面创建用户dragon,并授予用户在user_management数据库下所有对象的select权限。如下:

    授权后通过show grants for '用户名'@'登录地址'命令,可以查看该用户现有的权限。如下:

    说明一下:

    • 创建用户后该用户默认会有USAGE权限,该权限只能用于数据库登录,不能执行任何操作。
    • *.*表示所有数据库的所有对象,库名.*表示某个数据库的所有对象(表、视图、存储过程等)。

    此时该用户查看数据库时,就能查看到user_management数据库了。如下:

    说明一下:

    • 创建用户后该用户默认只能看到information_schema数据库,该数据库中保存的是MySQL服务器所维护的所有其他数据库的信息。

    进入user_management数据库后,也能查看其中的所有表。如下:

    但该用户目前只能查看表中的信息,而不能对表中的数据进行修改,因为我们只授予了该用户select权限。如下:

    下面将user_management数据库下的所有权限都授予该用户。如下:

    这时该用户才可以对表中的数据进行其他操作。如下:

    回收权限

    回收权限

    回收权限的SQL如下:

    REVOKE 权限列表 ON 库名.对象名 FROM '用户名'@'登录地址';

    说明一下:

    • 回收权限的语法与授权一样,只不过将to关键字改为了from,并且没有了IDENTIFIED BY '密码'字段。

    比如下面将dragon用户在user_management数据库下的所有权限回收。如下:

    说明一下:

    • 回收用户在某一数据库下的权限后,在该用户下一次进入该数据库时才会起作用。
    • 如果回收权限时该用户正在使用对应数据库,那么回收权限后该用户仍然拥有对应的权限。

  • 相关阅读:
    Python除法
    Tomcat详解(全网最全,最好的)
    玩转SpringBoot:SpringBoot的几种定时任务实现方式
    游戏服务器该如何选择
    JAVA集合01_Collection接口概述、常用方法、集合和数组互转、3种遍历方式
    适合汽车应用的MAX49017ATA/VY、MAX40025AAWT、MAX40025CAWT、MAX40026ATA/VY(线性)微功耗比较器
    计算机毕业设计 无人智慧超市管理系统的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试
    WPF开发随笔收录-心电图曲线绘制
    nacos做服务配置和服务器发现
    sql注入
  • 原文地址:https://blog.csdn.net/zxj20041003/article/details/133666979