【MySQL】MySQL里的用户账户和角色是什么?如何管理?

  • 用户(user)
    • 验证和授权
    • 创建用户账户
    • 连接服务器
    • 查看用户账户设置
  • 角色(role)
    • 创建角色
  • 操作用户帐户和角色
    • 重命名
    • 删除
  • 感谢

用户(user)

在MySQL中,用户是数据库访问的主要实体。每个用户都有自己的用户名和密码,用于验证和授权。通过合理的用户管理,可以控制谁能够访问数据库以及访问数据库的权限。

验证和授权

在连接到MySQL 服务器并执行查询时,会根据登录的用户来进行身份验证和活动授权。

  1. 验证。这一步是在连接层进行。是访问控制的第一个阶段。每次连接服务器的时候必须成功验证身份,否则无法连接,客户机将断开连接。
  2. 授权。这一步在SQL层进行。即在需要执行sql语句的时候需要验证该用户的权限。MySQL将确定这个用户要执行什么操作,是否有执行此操作所需的恰当权限。

【MySQL】MySQL里的用户账户和角色是什么?如何管理?_第1张图片

创建用户账户

MySQL会为每个用户帐户提供一个用户和主机。

帐户名称的格式为 'username'@'hostname'。其中单引号可以省略,但若是果用户名和主机名包含特殊字符(如破折号),则必须使用单引号将它们括起来。

示例:

  • root@localhost
  • reports_app@‘server-1’
  • ‘%^&’@192.168.5.3

主机名称可以是我们自己设置的主机域名,也可以是IP地址。可以使用通配符(%匹配多字符而 _匹配单字符)。比如主机名为名’%’ 的帐户可以从任何主机连接。同时,如果在创建用户时未指定主机名,则 '%’ 为默认值。

注意:这里的主机名代表着用户从哪个客户机登录服务器。

我们可以使用用 CREATE USER...IDENTIFIED BY 语句建立一个帐户。

下面这个示例表示我们创建一个名为 webuser 的用户,这个用户将从 localhost 本机连接服务器,并且使用口令Abc123。

CREATE USER webuser@localhost IDENTIFIED BY 'Abc123';

连接服务器

我们使用 mysql -u username -h servername -ppassword 来连接服务器。

注意:这里必须提供要连接的服务器的主机名。

如果不指定服务器主机名,那么默认是localhost。

查看用户账户设置

我们可以查看mysql数据库中的user表。

下面这条语句将查看表中user、host、authentication_string这三个字段,分别代表着用户名、主机名、已经加密的口令。

注意:这里提到的主机名是用户所在的客户机的主机名,不是前面在连接时提到的服务器主机名。

 SELECT user, host, authentication_string FROM mysql.user;

角色(role)

角色是一组权限的集合,它们可以用来简化权限管理并提高安全性。通过将权限分配给角色,然后将角色分配给用户,可以更方便地管理大量用户和权限设置。

在MySQL中,角色就类似于用户,因为角色也存储在mysql.user表中,角色名也由角色的名称和主机组成(‘rolename’@‘hostname’)。但是不同之处在于我们无法使用角色身份登录

创建角色

我们可以使用CREATE ROLE 语句创建一个或多个角色。角色是被锁定的,也就是说无法登录,同时在创建的时候也没有口令。

比如下面这条语句将创建两个角色:r_admin 和 r_dev@localhost。

CREATE ROLE r_admin, r_dev@localhost;

和创建用户一样,如果省略主机名,默认为 '%‘。

操作用户帐户和角色

重命名

我们可以使用 RENAME USER 语句重命名用户帐户和角色。

示例:

RENAME USER consultant@laptop3 TO james@laptop3 , r_admin TO r_super;

可以只更改用户名或主机名部分,也可以同时更改。

删除

删除用户账户用 DROP USER

删除角色用 DROP ROLE

示例:

DROP USER james@laptop3;
DROP ROLE r_super, r_dev@localhost;

删除用户账户或角色意味着:

  • 删除帐户或角色
  • 撤销现有帐户或角色的所有权限
  • 从存在的任何授权表中删除帐户的所有记录

感谢

好啦,这次的分享就到这里,感谢大家看到这里

你可能感兴趣的:(mysql,数据库)