MySQL用户管理详解

news2024/11/23 19:52:04

文章目录

  • 用户管理
    • 创建用户
    • 更改密码
    • mysql的权限分类
      • 授权实例
      • 撤销权力
    • mysql检查顺序
    • 相关文件信息

用户管理

创建用户

在MySQL中,创建用户是管理和授权数据库访问权限的重要操作。下面是创建用户的详细步骤:

  1. 连接到MySQL服务器:使用MySQL客户端工具(如MySQL命令行客户端或MySQL Workbench)连接到MySQL服务器。可以使用以下命令连接到本地服务器:

    mysql -u root -p
    

    这将提示您输入root用户的密码以登录MySQL服务器。

  2. 创建用户:在MySQL命令行或客户端中,使用以下命令创建用户:

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

    其中,'username’是要创建的用户名,‘host’是用户的主机限定符,可以是具体的主机名或使用通配符(如’%'表示所有主机),'password’是用户的密码。

    例如,要创建一个名为’john’的用户,密码为’mypassword’,可以使用以下命令:

    CREATE USER 'john'@'localhost' IDENTIFIED BY 'mypassword';
    
  3. 授予权限:创建用户后,可以授予该用户适当的数据库访问权限。授权语法如下:

    GRANT privileges ON database.table TO 'username'@'host';
    

    其中,'privileges’是用户的权限,可以是具体的权限(如SELECT,INSERT,UPDATE等),也可以是ALL PRIVILEGES表示所有权限。‘database.table’是要授权的数据库和表,可以使用通配符(如’*. *'表示所有数据库和表)。'username’和’host’是要授权的用户名和主机限定符。

    例如,要授予’john’用户在数据库’mydb’中的所有表上的读写权限,可以使用以下命令:

    GRANT ALL PRIVILEGES ON mydb.* TO 'john'@'localhost';
    
  4. 刷新权限:在授权或修改用户权限后,需要刷新MySQL权限表,使更改生效。使用以下命令刷新权限:

    FLUSH PRIVILEGES;
    

    这将使MySQL重新加载并应用最新的权限设置。

  5. 完成:用户已成功创建并授予相应权限。

更改密码

要给MySQL用户更改密码,可以使用以下步骤:

  1. 使用root或具有更改用户密码权限的用户登录到MySQL服务器。

  2. 执行以下命令来更改用户密码:

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

    其中,'username’是要更改密码的用户名,‘host’是用户的主机限定符,可以是具体的主机名或使用通配符(如’%'表示所有主机),'new_password’是用户的新密码。

    例如,要更改名为’john’的用户的密码为’mynewpassword’,可以使用以下命令:

    ALTER USER 'john'@'localhost' IDENTIFIED BY 'mynewpassword';
    

    如果用户之前没有设置密码,则使用SET PASSWORD语句来设置初始密码:

    SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password');
    

    例如:

    SET PASSWORD FOR 'john'@'localhost' = PASSWORD('mynewpassword');
    
  3. 刷新权限:在更改用户密码后,需要刷新MySQL权限表,使更改生效。使用以下命令刷新权限:

    FLUSH PRIVILEGES;
    

    这将使MySQL重新加载并应用最新的权限设置。

完成上述步骤后,用户的密码将被更改为新密码。请确保选择一个强密码,并妥善保管密码以确保数据库的安全。

mysql的权限分类

MySQL的权限可以分为全局权限、数据库级别权限和表级别权限。下面是对这些权限分类的详细介绍:

  1. 全局权限:全局权限是指对MySQL服务器整体的权限控制。具有全局权限的用户可以执行与服务器配置、用户管理和安全设置等相关的操作。常见的全局权限包括:

    • ALL PRIVILEGES:拥有所有权限,包括创建用户、创建数据库、更改权限等。
    • CREATE USER:允许创建新用户。
    • GRANT OPTION:允许授予或撤销其他用户的权限。

    全局权限可以授权给特定的用户,并通过mysql.user表中的相应字段进行管理。

  2. 数据库级别权限:数据库级别权限是指对特定数据库的权限控制。具有数据库级别权限的用户可以在指定数据库上执行各种操作,如创建表、修改数据、执行存储过程等。常见的数据库级别权限包括:

    • SELECT:允许查询数据。
    • INSERT:允许插入新数据。
    • UPDATE:允许修改数据。
    • DELETE:允许删除数据。
    • CREATE:允许创建新表或数据库。
    • ALTER:允许修改表结构。
    • DROP:允许删除表或数据库。

    数据库级别权限可以通过GRANT语句授权给用户,并在mysql.db表中进行管理。

  3. 表级别权限:表级别权限是指对特定表的权限控制。具有表级别权限的用户可以在指定表上执行特定的操作,如查询、插入、更新、删除等。常见的表级别权限包括:

    • SELECT:允许查询表数据。
    • INSERT:允许向表中插入新数据。
    • UPDATE:允许修改表中的数据。
    • DELETE:允许从表中删除数据。

    表级别权限可以通过GRANT语句授权给用户,并在mysql.tables_priv表中进行管理。

除了上述权限分类,MySQL还支持其他特殊权限,如存储过程的执行权限(EXECUTE)、触发器的执行权限(TRIGGER)和事件调度的权限(EVENT)等。这些权限可以根据具体的需求和安全策略进行授权和管理。

授权实例

创建一个用户

CREATE USER 'ydh'@'%' IDENTIFIED BY '123456';

全局权限这样授权不会有给别人授权的权力)

grant all on *.* to 'ydh'@'%';

数据库级别权限

grant all on test.* to 'ydh'@'%';

表级别权限

grant all on test.t1 to 'ydh'@'%';

表级别权限(只查看)

grant select on test.t1 to 'ydh'@'%';

注意:

创建用户的同时授予与权限这只在mysql5版本才能有用了,8版本不行了因为这样不安全)

grant all on *.* to 'ydh'@'%' identified by '123456';

with grant option这样这个用户就有了授权的权力了

grant all on *.* to 'ydh'@'%' identified by '123456' with grant option;

不过只能授权已有的权力

撤销权力

要撤销MySQL用户的权限,可以按照以下步骤进行操作:

  1. 使用root或具有撤销权限的用户登录到MySQL服务器。

  2. 执行以下命令来撤销用户的权限:

    REVOKE privilege_type [, privilege_type ...] ON database_name.table_name FROM 'username'@'host';
    

    其中,privilege_type是要撤销的权限类型,可以是多个以逗号分隔的权限。database_nametable_name是要撤销权限的数据库和表名。'username'@'host'是要撤销权限的用户和主机限定符。

    例如,要从用户’john’@'localhost’撤销SELECT和INSERT权限,可以使用以下命令:

    REVOKE SELECT, INSERT ON mydatabase.mytable FROM 'john'@'localhost';
    

    如果要撤销用户的所有权限,可以使用ALL PRIVILEGES关键字:

    REVOKE ALL PRIVILEGES ON database_name.table_name FROM 'username'@'host';
    
  3. 刷新权限:在撤销用户权限后,需要刷新MySQL权限表,使更改生效。使用以下命令刷新权限:

    FLUSH PRIVILEGES;
    

    这将使MySQL重新加载并应用最新的权限设置。

完成上述步骤后,用户将不再具有被撤销的权限。请注意,撤销用户权限时要谨慎操作,确保只撤销需要撤销的权限,以维护数据库的安全和可控性。

mysql检查顺序

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4iD8gTgw-1689786115328)(D:\Snipaste\03【电脑截图软件】snipaste截图软件\Typora\mysql\用户权限问题\权限检测顺序.png)]

在MySQL中,当用户进行数据库访问时,会按照一定的顺序检查用户权限,以确定用户是否具有执行特定操作的权限。下面是MySQL检查用户权限的详细顺序:

  1. 全局权限检查:MySQL首先会检查用户是否具有全局权限。全局权限控制用户在整个MySQL服务器上的权限,例如创建用户、创建数据库和修改全局配置等。如果用户没有足够的全局权限,MySQL将拒绝用户的请求,无需进一步检查。

  2. 数据库级别权限检查:如果用户通过全局权限检查,MySQL会进一步检查用户是否具有访问特定数据库的权限。在数据库级别,MySQL将检查用户对目标数据库的权限,例如查询、插入、更新和删除等操作。如果用户没有对数据库的足够权限,MySQL将拒绝用户对数据库的访问请求。

  3. 表级别权限检查:如果用户通过数据库级别权限检查,MySQL将继续检查用户是否具有对目标表的权限。在表级别,MySQL将检查用户对特定表的权限,例如查询、插入、更新和删除等操作。如果用户没有对表的足够权限,MySQL将拒绝用户对表的访问请求。

  4. 列级别权限检查:在某些情况下,MySQL还可以进行列级别的权限检查。这意味着MySQL将检查用户对表中特定列的权限,例如选择特定列或更新特定列。如果用户没有对列的足够权限,MySQL将拒绝用户对列的操作请求。

需要注意的是,MySQL的权限检查是按照从全局到数据库级别,再到表级别和列级别的顺序进行的。一旦用户在某一级别的权限检查失败,后续级别的检查将不再执行。这种权限检查顺序确保了用户在访问数据库时的安全性和权限控制。

此外,还有其他因素可以影响权限检查,如角色权限和权限继承。MySQL支持角色概念,可以将一组权限分配给角色,并将角色授予用户,从而简化权限管理。另外,MySQL还支持权限继承,允许用户继承其他用户或角色的权限,减少权限分配的复杂性。

综上所述,MySQL的权限检查顺序从全局到数据库级别,再到表级别和列级别,确保了用户在访问数据库时的权限控制和安全性。

相关文件信息

在MySQL中,与用户有关的文件主要包括以下几个:

  1. MySQL授权表(mysql.user):这个表记录了MySQL服务器上的用户账户和授权信息。它包含了用户名、密码加密后的哈希值、允许访问的主机等信息。通过对该表的操作,可以创建、修改和删除用户账户,以及授予或撤销用户的数据库权限。

  2. 密码策略文件(mysql.user表中的password_expired列):该文件定义了MySQL密码策略规则。它包含了密码过期时间、密码最小长度、密码复杂性要求等信息。这些规则用于强制用户在一定时间内更改密码,并设置强密码以提高安全性。

  3. 授权表缓存文件(mysql.columns_priv、mysql.db、mysql.tables_priv等):这些文件记录了数据库、表、列级别的权限信息。它们存储了用户对数据库对象的具体权限,如SELECT、INSERT、UPDATE、DELETE等。这些缓存文件提高了权限验证的性能,减少了对授权表的频繁查询。

  4. 权限配置文件(my.cnf或my.ini):这个文件是MySQL服务器的配置文件,其中包含了许多与用户相关的配置选项。例如,可以配置最大连接数(max_connections)和最大并发线程数(max_threads),以限制用户的并发连接数。此外,还可以配置其他安全相关的选项,如密码策略、加密算法等。

  5. 错误日志文件(通常为mysql-error.log):错误日志文件记录了MySQL服务器的错误和警告信息,包括与用户相关的错误。当用户登录或执行操作时出现错误,这些信息将被记录在错误日志中,以帮助故障排除和错误处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/781537.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人员定位安全管控系统:提升安全管理水平的智能解决方案

在当今社会,人员安全管理成为各行各业关注的焦点。为了保障人员的安全和提高管理效率,人员定位安全管控系统应运而生。 人员定位安全管控系统采用多种定位技术来实现对人员位置的准确定位,如GPS(全球定位系统)、Wi-Fi…

强化学习论文《Deep Reinforcement Learning that Matters》笔记

文章目录 1. 简介2. 实验分析超参数网络架构Reward ScaleRandom Seeds and TrailsEnvironmentCodebases 3. Reporting Evaluation MetricsOnline view vs. Policy OptimizationConfidence BoundsPower AnalysisSignificance 4. 结论5. 参考资料 1. 简介 这篇2017年的论文 是强化…

【PHP】phpstudy添加的网站,访问出现 嗯… 无法访问此页面

使用phpstudy创建网站,只有localhost可以访问, 其他所有网站无法访问,可能是你的账户没有修改vhost的权限 找到 C:\Windows\System32\drivers\etc下的vhost文件, 1、右键属性 将只读去掉 2、把用户对此文件的控制权限全部勾上 …

解决直播间源码音视频不同步问题的有效方式

随着网络技术的发展和移动设备的普及,电视、电脑、手机等数码产品越来越智能,我们不管是在家或是在外面都可以运用不同的数码产品去看剧或是短视频等,但可能很多人遇到过这样一种情况:当我们在看剧或是短视频的时候,可…

微信小程序可输入弹窗

addWhite() {wx.showModal({title: 添加白名单,editable: true, // 可输入content: ,complete: (res) > {if (res.confirm) {if (!res.content) { // 输入的值wx.showToast({title: 请填写白名单,icon: error})this.addWhite()}else {// 调接口}}}})},

Linux命令-按照与使用(17)(转载)解决同一台服务器上部署多个tomcat的同一个项目session冲突问题...

———————————————— 版权声明:本文为CSDN博主「strive_or_die」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/strive_or_die/article/details/103191546…

EXCEL模板如何自定义并使用?

文章目录 0.引言1.新建EXCEL2.EXCEL另存为模板3.使用模板 0.引言 使用Excel模板可以帮助用户更高效地处理和分析大量数据,简化重复任务,并提供清晰直观的数据可视化效果。对于需要频繁进行数据处理和分析的个人或组织来说,使用Excel模板是一个…

半导体自动化专用除静电设备的特点和功能

半导体自动化专用离子风机是一种用于半导体制造过程中的特殊风机设备。它通过产生带电粒子(离子)的气流来实现静电去除和除尘,以确保半导体制造环境的洁净和无尘。 以下是半导体自动化专用离子风机的一些特点和功能: 1. 静电去除…

听GPT 讲K8s源代码--pkg(七)

k8s项目中 pkg/kubelet/config,pkg/kubelet/configmap,pkg/kubelet/container,pkg/kubelet/cri 这几个目录处理与 kubelet 配置、ConfigMap、容器管理和容器运行时交互相关的功能。它们共同构成了 kubelet 的核心功能,使其能够在 …

在外远程查看家里内网监控

在外远程查看家里内网监控 现代生活节奏紧张,巨大的压力压得我们喘不过气来,因此很多人选择在家里养一只陪伴我们的宠物,用以舒缓紧张的情绪和繁重的压力。但养了这些小家伙后,不在家时又总想随时看看家里小可爱们的情况&#xf…

STL:双端队列容器适配器仿函数优先级队列

deque 双端队列可以在头部和尾部进行插入删除操作与vector相比,头插效率高,不需要搬移元素 与list相比,空间利用率高 deque逻辑上空间是连续的,物理上并不是,是由一段段小空间拼接而成的 双端队列的迭代器比较复杂 cur…

Python爬虫技术及其原理详解

概要 随着互联网的发展,大量的数据被存储在网络上,而我们需要从中获取有用的信息。Python作为一种功能强大且易于学习的编程语言,被广泛用于网络爬虫的开发。本文将详细介绍Python爬虫所需的技术及其原理,并提供相关的代码案例。 …

Python—数据结构(一)

先放一张自己学习和整理归纳的思维导图,以便让大家都知道我自己的整体学习路线。 数据结构的学习路上内容枯燥,但坚持下来一定有很大的收获!加油💪🏻! 数据结构 数据的概念数据元素: 若干基本…

php基于redis处理session的方法

php基于redis处理session的方法 一个基于redis的处理session的方法,如下: class Session_custom { private $redis; // redis实例 private $prefix sess_; // session_id前缀 // 会话开始时,会执行该方法,连接redis服务器 p…

【JVM】JVM执行流程 JVM类加载 垃圾回收机制等

目录 🌷1、JVM是什么? 🌷2、JVM的执行流程(能够描述数据区5部分) 🌷3、JVM类加载过程 🌷4、双亲委派机制:描述类加载的过程 问题1:类加载器 问题2:什么…

前端知识点视频补充

使用工具: Vscode使用: 需要下载插件:open in browser。这个插件可以快速打开浏览器。 选择文件夹有两种方式:选择打开文件、拖拽方式(这种最方便) 快捷键:快速生成Htm结构文件:…

msvcr100.dll丢失的解决方法

在解决msvcr100.dll丢失问题前,给大家介绍一下为什么msvcr100.dll会丢失 msvcr100.dll文件丢失的原因可能有多种。以下是一些常见的原因: 文件被误删:有时候,用户可能会误删除msvcr100.dll文件,导致其丢失。 文件损…

蓝桥杯专题-真题版含答案-【生命之树】【消除尾一】【密码脱落】【生日蜡烛】

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

用户管理功能

后端 # 获取用户列表 bp.get("/user/list") def user_list():users UserModel.query.order_by(UserModel.join_time.desc()).all()user_list [user.to_dict() for user in users]return restful.ok(datauser_list)# 用户是否可用 bp.post("/user/active"…

json-server提供json接口服务--示例版本

一、基于以下数据做接口常用功能的查询 1.1启动服务并且创建数据库文件,对外提供文件如下: {"posts": [{"author": "杰瑞","id": 1},{"id": 2,"title": "json-server","au…