MySQL中的用户和权限管理(如果想知道MYSQL中有关用户和权限管理的知识,那么只看这一篇就足够了!)
前言:在 MySQL 数据库管理中,用户管理是确保数据安全和系统稳定的关键环节,通过合理的用户权限控制,管理员可以有效限制用户访问,防止非法操作和数据泄露,本文将介绍 MySQL 中常见的用户管理操作,包括用户创建、密码修改、删除用户和权限管理等。* *>> >这里是的BLOG> >想要了解更多内容可以访问我的主页-CSDN博客在正式开始讲解之前,先让我们看一下本文大致的讲解内容:
目录1.查看用户2.创建用户3.修改密码? ? ? ? (1)使用 ALTER USER 修改密码:? ? ? ? (2)使用 SET PASSWORD 修改当前用户密码:? ? ? ? (3)使用 SET PASSWORD FOR 修改指定用户密码:4.删除用户5.权限管理*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_user和local_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:指定权限类型,如SELECT、INSERT等。> *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数据库中所有表的所有权限,包括SELECT、INSERT、UPDATE等,甚至包括修改表结构和删除数据库。通过上述的两个案例的讲解之后,读者应该就对授予权限操作有了自己的理解了!,那么既然有授予权限,就会有回收权限的操作,那么我们如何去回收权限呢?当用户的权限不再需要时,可以使用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的所有权限。至此我们就学完了权限管理的所有操作了!!!* * *以上就是本篇文章全部内容~~
