深圳做网站做公司网站的公司,最好的网站开发,做北京塞车网站,网站搭建需要什么技术文章目录 一、用户 1、1 用户信息 1、2 创建用户 1、3 删除用户 1、4 修改用户密码 二、数据库的权限 2、1 用户权限 2、2 回收权限 #x1f64b;♂️ 作者#xff1a;Ggggggtm #x1f64b;♂️ #x1f440; 专栏#xff1a;MySQL #x1f440; #x1f4a5; 标题… 文章目录 一、用户 1、1 用户信息 1、2 创建用户 1、3 删除用户 1、4 修改用户密码 二、数据库的权限 2、1 用户权限 2、2 回收权限 ♂️ 作者Ggggggtm ♂️ 专栏MySQL 标题MySQL中的用户管理 ❣️ 寄语与其忙着诉苦不如低头赶路奋路前行终将遇到一番好风景 ❣️ MySQL中的用户管理是指对数据库用户进行创建、授权、修改和删除等操作的过程。用户是MySQL数据库的访问身份它们定义了连接到数据库的权限和限制。 MySQL中也是有root用户和普通用户之分的。跟Linux一样root用户就是所谓的超级用户权限较大且基本上没有限制。普通用户都是我们自己后期创建的权限相对较小且较多限制。 一、用户
1、1 用户信息 MySQL中的用户都存储在系统数据库mysql的user表中。如下图 我们不妨来看看user表的表结构如下图 说明一下在mysql数据库中有一个名为user的表该表记录了MySQL服务器上的用户账户信息。下面是对user表重要字段的详解 user字段这是用户账户的名称用于登录MySQL服务器时使用。每个用户账户都必须具有唯一的用户名。 host字段表示允许该用户从哪个主机连接到MySQL服务器。可以使用具体的主机名也可以使用通配符%表示允许来自任意主机的连接。 authentication_string字段用于存储用户账户的密码。在MySQL 8.0版本之前密码以明文形式存储在该字段中。而在MySQL 8.0版本之后密码以加密形式存储并且采用了更安全的认证方式。 select_priv、insert_priv、update_priv、delete_priv等权限字段这些字段用于记录用户账户具有的数据库操作权限。例如select_priv字段表示用户是否具有查询数据的权限insert_priv字段表示用户是否具有插入数据的权限依此类推。 grant_priv字段表示用户是否具有赋予其他用户权限的能力。如果该字段值为Y则表示该用户具有授权权限。 从上述的表结构我们能够看到USER和HOST字段一同构成主键这也就意味着可以有相同的用户名只需要登录的主机限制不同即可下面我们再看一下该表中的数据如下图 从上图中我们也能大概的看出来root用户的权限是较高的。由于字段较多现在我们就挑选出我们需要的字段如下图 从上图中能够看到现在是有三个用户均为系统自带的。接下来我们看怎么自己创建用户。 1、2 创建用户 创建用户的语法 create user 用户名登陆主机/ip identified by 密码; 下面我们就来创建一个用户具体如下 这里有几点需要解释 登陆主机为localhost代表着该用户只允许在当前主机登录登陆主机也可以为 %代表着该用户可以在任意主机登录。但是不要轻易添加一个可以从任意地方登陆的user。从上述例子中我们也能发现对用户的增删查改操作本质上就是在修改user表。可以直接对user表操作但是不建议这样做 下面我们登陆一下这个用户具体如下图 当我们设置了登陆主机位 % 时同时也在本主机上安装了MySQL那么就可以使用cmd命令窗口进行登录。具体用到的指令为mysql -u 用户名 -h IP地址 -P 端口号 -p。这里就不再演示。 1、3 删除用户 删除用户语法 drop user 用户名主机名 当我们处于普通用户时并不能删除其他用户。原因很简单权限不够。具体如下图 现在我们切换到root用户。在进行删除用户具体如下 注意当我们在删除用户时如果不指明待用户的登录地址则默认删除的是登录地址为%的用户。 1、4 修改用户密码 修改用户密码语法 --自己改自己密码
set passwordpassword(新的密码);--root用户修改指定用户的密码
set password for 用户名主机名password(新的密码) 当用户相对自己修改密码时可用到上述的第一条语句中。第二条语句可用于root用户对其他普通用户做修改。下面我们要试一下第二条语句。具体如下图 注意创建用户的SQL当中包含用户的密码因此该SQL不会被历史记录下来所以不能通过上下键进行追溯。 二、数据库的权限
2、1 用户权限 MySQL中的权限是与用户关联的。每个用户都有自己的用户名和密码并且可以被分配不同的权限。 MySQL提供了各种权限包括SELECT查询、INSERT插入、DELETE删除、UPDATE更新、CREATE创建、DROP删除、GRANT授权、REVOKE撤销授权等。具体可结合下图 但是刚创建的用户没有任何权限。需要给用户授权。 授权语法 grant 权限列表 on 库.对象名 to 用户名登陆位置 [identified by 密码] 说明一下 权限列表多个权限用逗号分开。 grant select on ...grant select, delete, create on ....grant all [privileges] on ... -- 表示赋予该用户在该对象上的所有权限 *.* : 代表本系统中的所有数据库的所有对象表视图存储过程等。库.* : 表示某个数据库中的所有数据对象(表视图存储过程等)。 identified by 可选。 如果用户存在赋予权限的同时修改密码 , 如果该用户不存在就是创建用户。 或许你到这里就会明白了我们不建议使用root的用户的原因之一是因为root用户的权限太大了可以操作任何表。但是我们可以创建普通用户然后给普通用户赋予对某个数据库中表的操作权限。这样就可以很好的将整个数据库管理起来。 我们先来看一下普通用户ggg中可以对哪些库进行操作如下图 我们看到只有一个系统自带的数据库其他的并没有任何数据库。同时只有一个 USAGE 权限就是登录的权限相当于刚创建的用户没有任何权限。现在我们通过root用户给ggg用户赋予权限。具体如下 说明一下上述的语句是给用户ggg 能够查询staff库中所有表信息的权限。具体如下图 我们再看ggg用户如下图 我们看到有staff库了。现在我们可以进入到staff库中进行查看其中所有表以及表中的信息。具体如下 但是由于只赋予了select权限所以只能查看并不能对表进行修改操作。具体如下图 现在我们将所有的权限赋给用户ggg具体操作如下 这时用户ggg 可以对staff中的表进行修改操作了。具体如下 2、2 回收权限 回收权限语法 revoke 权限列表 on 库.对象名 from 用户名登陆位置; 现在是用户ggg 拥有所有对staff库中表操作的权限。现在我们想收回一些权限可以用到revoke。具体如下 我们可以看到用户ggg的权限只有UASGE也就是只有登陆权限了。 注意回收用户在某一数据库下的权限后在该用户下一次进入该数据库时才会起作用。也就是如果回收权限时该用户正在使用对应数据库那么回收权限后该用户仍然拥有对应的权限。