mysql 用户管理

MySQL中可创建不同的用户,并分配不同的权限,用于保证MySQL中数据的安全性。MySQL8中提供了角色,是权限的集合,可以直接赋予用户以角色。用户管理主要包括用户管理、权限管理、角色管理内容。

MySQL用户主要包括两种:root用户和普通用户。root 用户为超级管理员,拥有MySQL提供的所有权限,而普通用户的权限取决于该用户在创建时被赋予的权限有哪些。实际开发中很少直接使用root用户,因为权限过大,操作不当会具有很大的危险性。

MySQL中有一个自带数据库mysql,其中有多个和用户权限有关的数据库表。

  • user 表中存储了允许连接到服务器的用户信息以及全局级(适用于所有数据库)的权限信息,这是最关键的表。
  • db 表中存储了某个用户对相关数据库的权限(数据库级权限)信息
  • 表级权限表tables_priv,可以实现单张表的权限设置
  • 列级权限表 columns_priv,可以实现单个字段的权限设计

MySQL用户通过身份认证后,会进行权限的分配,分配权限是按照user表、db表、tables_priv 表、columns_priv 表的顺序依次进行验证。

  • 先检查全局级权限表user,如果user表中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db表、tables_priv 表和columns_priv 表;
  • 如果user表中对应的权限为N,则到数据库级权限表db中检查此用户对应的具体数据库的权限,如果得到db表中对应的权限为Y,将不再检查tables_priv表和columns_priv;
  • 如果db表中对应的权限为N,则检查表级权限表tables_priv中此数据库对应的具体表的权限,以此类推。

用户管理主要操作包括创建用户、修改用户、删除用户、查询用户,每个新建的用户都会在 user 表中有对应的记录

select * from user;

查询所有用户

创建用户

MySQL提供了CREATE USER语句,允许您创建一个新的用户帐户。 CREATE USER语句的语法如下:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';

参数说明:

  • username:你将创建的用户名
  • host:指定该用户在哪个主机上可以登录,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登录,可以使用通配符%,还可以指定的ip地址范围
  • password:给用户设置密码,password必须是明文。 在将用户帐户保存到用户表之前,MySQL将加密明文密码
在MySQL中,不仅可以指定谁可以连接到数据库服务器,还可以指定用户连接的主机。因此,MySQL中的用户帐号由用户名,以及使用@字符分隔的主机名组成。
  • 如果admin用户从localhost主机连接到MySQL数据库服务器,则用户帐户是书写形式是:admin@localhost,其中@符号是一个固定的分隔符。admin用户只能从本地主机(localhost)连接到MySQL数据库服务器,而不是远程主机(如:yiibai.com),这使得MySQL数据库服务器更加安全。
  • 如要限制admin用户只能从yiibai.com主机登录,那么可以书写为:admin@yiibai.com
  • 如果想要允许从任意主机登录,那么可以书写为:admin@%

要查看用户帐户的权限,请使用SHOW GRANTS语句,如下所示:

SHOW GRANTS FOR dbadmin@localhost;

修改用户密码

方法一

ALTER USER 'username'@'host' IDENTIFIED BY 'password';

方法二

set password for 'username'@"%" =  "password';

删除用户

DROP USER 'username'@'%';

 

posted @ 2022-06-02 16:23  李小菜丶  阅读(240)  评论(0编辑  收藏  举报