当前位置: 代码网 > it编程>数据库>Mysql > MySQL中的用户和权限管理详解(看这一篇就足够了!)

MySQL中的用户和权限管理详解(看这一篇就足够了!)

2025年10月31日 Mysql 我要评论
前言:在 mysql 数据库管理中,用户管理是确保数据安全和系统稳定的关键环节,通过合理的用户权限控制,管理员可以有效限制用户访问,防止非法操作和数据泄露,本文将介绍 mysql 中常见的用户管理操作

前言:

在 mysql 数据库管理中,用户管理是确保数据安全和系统稳定的关键环节,通过合理的用户权限控制,管理员可以有效限制用户访问,防止非法操作和数据泄露,本文将介绍 mysql 中常见的用户管理操作,包括用户创建、密码修改、删除用户和权限管理等。

在正式开始讲解之前,先让我们看一下本文大致的讲解内容:

1.查看用户

首先先让我们学习用户方面的知识,说到用户,我们就需要学会如何去查看用户,在 mysql 中,所有的用户信息存储在 mysql 系统数据库中的 user 表中,我们想要查看当前数据库的所有用户,可以通过 select 语句从该表中查询相关数据。

例子:

select user, host from mysql.user;

代码解释:

        这条查询语句将返回当前 mysql 系统中所有用户的名称和主机信息,字段 user 表示用户名,而字段 host 表示该用户允许从哪些主机进行连接。

以上就是在mysql中查看用户的操作了!!!

2.创建用户

学完了mysql中查看用户的操作之后,接下来让我们学习一下如何在mysql中创建用户,在 mysql 中创建新用户时,通常使用 create user 语句,通过该语句,我们可以为新用户分配名称、设置密码并指定哪些主机能够连接。

创建用户语法:

create user [if not exists] 'user_name'@'host_name' identified by 'auth_string';

代码解释:

  • user_name:指定新用户的用户名。
  • host_name:指定该用户的连接主机范围,可以是具体的 ip 地址,也可以是通配符 %,表示允许从任何主机连接。
  • auth_string:为用户设置的密码。
  • if not exists:为可选,用于避免在创建用户时出现重复错误,如果指定的用户已经存在,系统将不会抛出错误。

——了解完了创建用户的语法之后,现在让我们使用两个案例来进一步加深理解:

例子1:创建一个允许从任何主机连接的用户

create user 'new_user'@'%' identified by 'password123';

代码解释:

        这条语句创建了一个名为 new_user 的用户,密码是 password123,并允许该用户从任何主机连接到 mysql 服务器,% 表示通配符,允许从任何 ip 地址进行连接。

例子2:创建一个仅允许从本地主机连接的用户

create user 'local_user'@'localhost' identified by 'local_password';

代码解释:

        这条语句创建了一个名为 local_user 的用户,密码为 local_password,并且该用户仅能从本地主机(即数据库服务器所在的机器)进行连接,localhost 表示只有来自同一机器的连接才会被允许。

——通过上述的两个案例我们对mysql中的创建用户有了更进一步的理解,那么我们在创建完成之后,如何去检查用户创建情况呢?

在创建完用户后,我们可以通过以下查询语句检查新用户是否已经成功添加:

select user, host from mysql.user;

代码解释:

        这个查询将列出所有用户及其对应的主机信息,帮助我们确认 new_userlocal_user 是否已正确创建。

以上就是创建用户的全部内容了!!!

3.修改密码

我们知道,一个用户不可能让任何人都可以使用其身份进行操作,这时我们就要使用到密码,那么如何去修改密码呢?以下为修改密码的三种方式。

(1)使用alter user修改密码:

alter user 'user_name'@'host_name' identified by 'new_password';

代码解释:

        这是推荐的方式,其能够确保密码更新后即刻生效,alter user 是 mysql 5.7 及更高版本支持的命令,适用于修改用户的认证方式和密码。

(2)使用set password修改当前用户密码:

set password = password('new_password');

代码解释:

        这条语句用于修改当前登录用户的密码,如果管理员当前是登录的 root 用户,那么该命令会修改 root 用户的密码。

(3)使用set password for修改指定用户密码:

set password for 'user_name'@'host_name' = password('new_password');

代码解释:

        这种方式与 alter user 类似,用于修改指定用户的密码,但是需要注意的是,set password for 语句与 alter user 在效果上是一样的,但它们的语法和实现有所不同。

        ——至此,我们就了解了修改密码的三种方式了,那么现在让我们使用两个案例来加深一下理解:

例子1:修改 new_user 用户的密码

alter user 'new_user'@'%' identified by 'new_password123';

代码解释:

        这条命令将 new_user 用户的密码修改为 new_password123,并且立即生效,并且该用户依然可以从任何主机进行连接。

例子2:修改 root 用户的密码

alter user 'root'@'localhost' identified by 'new_root_password';

代码解释:

        此语句将 root 用户的密码修改为 new_root_password

这样我们就大致的了解了在mysql中如何去修改密码了!!!

4.删除用户

随着数据库的使用,就可能会出现一些不再需要的用户,在这种情况下,我们就可以通过 drop user 语句来删除不再需要的用户及其相关权限。

删除用户语法:

drop user [if exists] 'user_name'@'host_name';

其中if exists是一个可选项,表示如果该用户不存在,系统将不会抛出错误。

——同理我们也使用两个案例来进一步加深你对删除用户的理解:

例子1:删除 new_user 用户

drop user 'new_user'@'%';

代码解释:

这条语句将会删除 new_user 用户,并且不再允许该用户从任何主机连接到 mysql 服务器。

例子2:删除 local_user 用户

drop user 'local_user'@'localhost';

代码解释:

此语句将删除 local_user 用户,并且该用户不再能够从本地主机连接到 mysql 服务器。

——通过上述的两个案例,我相信读者对删除用户操作有了自己的理解了,那么删除完了用户信息之后,我们如何去查看删除用户情况呢?

删除用户后,我们可以通过查询 mysql.user 表来验证用户是否已被删除(如下):

select user, host from mysql.user;

至此,我们就学完了mysql中的删除用户操作了!!!

5.权限管理

最后,让我们学习一下权限管理,在mysql中,权限系统非常强大,能够精确控制每个用户能够执行哪些操作,并限制用户的访问范围,首先先让我们了解一下mysql中内置的权限列表:

  • select:读取数据。
  • insert:插入数据。
  • update:更新数据。
  • delete:删除数据。
  • all privileges:所有权限。

权限不仅可以针对数据库级别进行设置,也可以针对特定的表、列甚至是某些存储过程进行授权。

在了解完了在mysql中有哪些内置的权限列表之后,接下来让我们学习一下如何去授予权限,在mysql中,我们可以通过 grant 语句,使管理员为用户授予特定权限,其基本语法如下:

grant priv_type on priv_level to 'user_name'@'host_name' [with grant option];

代码解释:

  • priv_type:指定权限类型,如 selectinsert 等。
  • priv_level:权限的作用范围,通常为数据库、表或列。
  • with grant option:如果包含此选项,表示该用户可以将获得的权限再授予其他用户。

当然这里我们给出两个案例来帮助读者进行理解。

例子1:授予 new_user 用户对 test_db 数据库的 select 权限:

grant select on test_db.* to 'new_user'@'%';

代码解释:

        这条语句将授予 new_user 用户对 test_db 数据库中所有表的 select 权限,此用户将能够查询该数据库的所有表,但不能进行修改或删除操作。

例子2:授予 new_user 用户对 test_db 数据库的所有权限:

grant all privileges on test_db.* to 'new_user'@'%';

代码解释:

        此语句授予 new_user 用户对 test_db 数据库中所有表的所有权限,包括 selectinsertupdate 等,甚至包括修改表结构和删除数据库。

通过上述的两个案例的讲解之后,读者应该就对授予权限操作有了自己的理解了!,那么既然有授予权限,就会有回收权限的操作,那么我们如何去回收权限呢?

当用户的权限不再需要时,可以使用 revoke 语句撤销其权限:

revoke priv_type on priv_level from 'user_name'@'host_name';

当然,我们也是使用两个案例来帮助读者进一步理解:

例子1:撤销 new_user 用户对 test_db 数据库的 select 权限

revoke select on test_db.* from 'new_user'@'%';

代码解释:

此语句撤销了 new_user 用户在 test_db 数据库中的 select 权限,用户将不再能够执行查询操作。

例子2:撤销 new_user 用户对 test_db 数据库的所有权限

revoke all privileges on test_db.* from 'new_user'@'%';

代码解释:

通过此命令,new_user 用户将失去 test_db 的所有权限。

至此我们就学完了权限管理的所有操作了!!!

总结

到此这篇关于mysql中的用户和权限管理详解的文章就介绍到这了,更多相关mysql用户和权限管理内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com