MySQL中的用户管理

news2024/10/3 8:26:57

系列文章目录

MySQL常见的几种约束

MySQL中的函数

MySQL中的事务

MySQL中的视图

MySQL中的索引


文章目录

  • 系列文章目录
  • 前言
  • 一、用户管理
    • 1、用户管理入门
    • 2、用户管理操作及示例
  • 二、权限管理
    • 1.权限管理语法
    • 2.权限操作示例
  • 三、角色管理
    • 1、角色管理入门
    • 2、角色操作示例
  • 总结


在这里插入图片描述

前言

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


一、用户管理

1、用户管理入门

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中此数据库对应的具体表的权限,以此类推。

2、用户管理操作及示例

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

其中创建用户的语法为:

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • username:你将创建的用户名
  • host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%;还可以指定的ip地址范围
  • password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

在MySQL5.7之前,user表中还有一个名为password的字段用于存储用户的密码,但是在MySQL5.7之后,密码存储authentication_string字段中。

用户操作示例:

-- 查询用户列表  
use mysql  
select * from user  
-- 所有的用户信息保存在mysql数据库的user数据库表中  
  
-- 创建用户  
create user 'zhangsan' identified by 'zhangsan'  
create user 'lisi'@'localhost' identified by 'lisi'  
create user lisi@localhost identified by 'lisi'   
-- %:代表可以在所有主机(包括当前主机)登录数据库  
-- localhost  表示只可以在本地登录(客户端和服务器在同一台电脑上)
-- 也可以指定具体的ip或者ip范围
 
-- 修改用户  
-- 无法使用navicat连接数据库,需要修改密码验证插件  
alter user'zhangsan'@'%' identified with mysql_native_password by 'zhangsan'
-- 修改用户密码  
-- 方法1 alter user  
alter user 'zhangsan'@'%' identified  by 'zhangsan2'  
-- 方法2:set password  
set password for 'zhangsan'@'%'  = 'zhangsan3'  
   
-- 删除用户  
drop user 'lisi'@'localhost'  

二、权限管理

1.权限管理语法

MySQL通过权限管理机制可以给不同的用户授予不同的权限,从而确保数据库中数据的安全性。权限管理机制包括查看权限、授予权限以及收回权限。

其中授予权限的语法为:

grant privileges ON dbname.tablename TO 'username'@'host'
  • privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL。新创建的用户默认权限为USAGE,除了可以登录数据库外,没有任何权限
  • databasename:数据库名
  • tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示

2.权限操作示例

-- 查询权限  
-- 查询当前用户权限  
show grants   
-- 查询指定用户的权限  
show grants for 'zhangsan'@'%'  
  
--  特殊权限  
-- USAGE  :只有登录权限  
-- ALL :所有权限  
	  
-- 授予权限和撤销权限1  
grant  all  on mydb.*  to  'zhangsan'@'%'  
revoke all  privileges  on mydb.*  from  'zhangsan'@'%'  
  
-- 授予权限和撤销权限2  
grant  select,delete,update,insert on mydb.dept  to 'zhangsan'@'%'  
revoke delete on mydb.dept  from 'zhangsan'@'%'  
  
-- 刷新权限  
flush  privileges;

三、角色管理

1、角色管理入门

MySQL 数据库中通常都会出现多个拥有相同权限集合的用户,在之前版本中只有分别向多个用户授予和撤销权限才能实现单独更改每个用户的权限。在用户数量比较多的时候,这样的操作是非常耗时的。

MySQL 8.0 为了用户权限管理更容易,提供了一个角色管理的新功能。角色是指定的权限集合,和用户帐户一样可以对角色进行权限的授予和撤消。如果用户被授予角色权限,则该用户拥有该角色的权限。

MySQL 8.0 提供的角色管理功能如下:

  • CREATE ROLE 角色创建
  • DROP ROLE 角色删除
  • GRANT 为用户和角色分配权限
  • REVOKE 为用户和角色撤销权限
  • SHOW GRANTS 显示用户和角色的权限
  • SET DEFAULT ROLE 指定哪些帐户角色默认处于活动状态
  • SET ROLE 更改当前会话中的活动角色
  • CURRENT_ROLE() 显示当前会话中的活动角色

2、角色操作示例

-- 创建角色  
create role 'dev_read','dev_write'  
 
-- 给角色分配权限  
grant select on mydb.* to 'dev_read';  
grant update,insert,delete on mydb.* to 'dev_write';  
	  
-- 创建用户  
create user 'user1'@'localhost' identified by 'user1';  
create user 'user2'@'localhost' identified by 'user2';  
create user 'user3'@'localhost' identified by 'user3';  
  
-- 给用户分配角色  
grant dev_read to 'user1'@'localhost'  
grant dev_read to 'user2'@'localhost'  
grant dev_write to 'user3'@'localhost'  
 
-- 激活角色,设置用户帐户连接到数据库服务器时指定哪些角色应该处于活动状态
set default role all to 'user1'@'localhost','user2'@'localhost'  ,'user3'@'localhost'    
 
-- 给用户撤销角色  
revoke select on mydb.* from 'dev_read';  
revoke update,insert,delete on mydb.* from 'dev_write'  
  
-- 删除角色  
drop role 'dev_read';  
drop role 'dev_write'  
 
-- 删除用户  
drop user  'user1'@'localhost','user2'@'localhost'  ,'user3'@'localhost'  


总结

MySQL中的用户管理是非常重要的一步,它可以帮助我们控制和管理数据库的访问权限,保证数据的安全性和完整性。在实际应用中,我们需要根据实际情况来设置用户的访问权限,并定期检查和更新用户的权限信息。

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

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

相关文章

Chisel 语言 - 小记

文章目录 Chisel 一种硬件描述语言,类似 verilog 本质是 Scala编程语言的一个包,类似于 numpy 是 Python 的一个包。 官网 : https://www.chisel-lang.orggithub: https://github.com/chipsalliance/chisel 同名的还有个 Facebook…

【数学建模】--灰色关联分析

系统分析: 一般的抽象系统,如社会系统,经济系统,农业系统,生态系统,教育系统等都包含有许多种因素,多种因素共同作用的结果决定了该系统的发展态势。人们常常希望知道在众多的因素中,哪些是主要…

每天一道leetcode:516. 最长回文子序列(动态规划中等)

今日份题目: 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 示例1 输入:s "bbb…

Nginx环境搭建以及Docker环境部署

目录 Nginx环境搭建 1.首先创建Nginx的目录并进入 2.下载Nginx的安装包 可以通过FTP工具上传离线环境包,也可通过wget命令在线获取安装包 没有wget命令的可通过yum命令安装 3.解压Nginx的压缩包 4.下载并安装Nginx所需的依赖库和包 安装方式一 安装方式二 --- 也…

hello world, this is my time

case1 2023-08-11 00:19:12 其实我这个人吧, 没事做也会刷点b站和抖音, 而且我经常看罗翔老师讲, 什么是爱, 他说爱是责任, 爱是不离不弃, 爱是有耐心, 爱是安慰, 爱也是陪伴, 爱同时也是一种共生的关系, 两个人彼此之间共生, 互相都希望彼此可以好好的生活下去, 看见对方活的比…

Git全栈体系(六)

第十章 自建代码托管平台-GitLab 一、GitLab 简介 GitLab 是由 GitLabInc.开发,使用 MIT 许可证的基于网络的 Git 仓库管理工具,且具有 wiki 和 issue 跟踪功能。使用 Git 作为代码管理工具,并在此基础上搭建起来的 web 服务。GitLab 由乌克…

红帽停止公开Linux操作系统(RHEL)源代码,甲骨文等企业成立协会

根据报道,红帽(Red Hat)在8月11日宣布停止公开企业级Linux操作系统(RHEL)的源代码后,甲骨文、SUSE和CIQ昨日联合发布了一份声明。声明宣布成立了Open Enterprise Linux Association(OpenELA&…

安全测试中常见的业务安全问题

“在测试过程中,特殊的操作往往容易触发异常场景,而这些异常场景也很容易引起安全问题!” 常见的安全漏洞就不多说了,这里主要介绍常见的业务安全问题及修复建议。 01 刷短信 问题描述: 当发送短信的请求接口只需要…

用最少数量的箭引爆气球——力扣452

文章目录 题目描述解法一题目描述 解法一 int findMinArrowShots(vector<vector<int>>& nums){if(num

什么,你说你不会通过jdbc一次性创建10个数据库???

小朋友你是否有很多问号&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f; 1、在资源文件中建一个文件&#xff0c;填入连接数据库的基本信息。 2、通过反射拿到资源文件。…

LeetCode150道面试经典题--判断子序列(简单)

1.题目 给定字符串 s 和 t &#xff0c;判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些&#xff08;也可以不删除&#xff09;字符而不改变剩余字符相对位置形成的新字符串。&#xff08;例如&#xff0c;"ace"是"abcde"的一个子序…

leetcode19. 删除链表的倒数第 N 个结点

题目&#xff1a;leetcode19. 删除链表的倒数第 N 个结点 描述&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 思路&#xff1a; 让前面的节点比后面的节点先走n1步&#xff0c;因为从链表的尾节点的下一个节点开始&…

【数据结构】“单链表”的练习题(二)

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …

linux学习(进程创建)[8]

创建进程 myproc.c #include <stdio.h> #include <unistd.h>int main() {printf("我是父进程\n");pid_t id fork();if(id < 0){printf("创建子进程失败\n");return 1;}else if(id 0){while(1){printf("我是子进程&#xff1a; pid…

Java基础入门篇——数组初识

一、数组 1.假设某公司有100个员工&#xff0c;需要统计某公司员工的工资情况&#xff0c;首先需要声明100个变量来分别记每个员工的工资&#xff0c;那么如果按照之前的做法&#xff0c;可能定义的结构如下所示&#xff1a; int a1,a2,a3,......a100; 要求你输出这100个员工…

如何将maven部署在Idea的教学,和idea介绍

目录 一.idea介绍&#xff0c;以及一些基本特点&#xff01; 1.1idea介绍 1.2idea特点 1.3.idea和eclipse区别 1.4idea安装 4.1下载网址 4.2下载后安装&#xff08;见图片&#xff09; 1.5 Idea的一些操作更改 5.1主题颜色 5.2设置鼠标悬浮提示 5.3显示方法分隔符 5.4忽…

如何解决新学期分班查询公布难题?试试这个方法

作为教师&#xff0c;我们常常需要进行学生分班管理&#xff0c;这项工作繁琐但至关重要。为了提高工作效率&#xff0c;我们可以利用现代技术开发一款学生分班查询系统。本文将介绍如何设计和开发这个系统。 首先&#xff0c;我们可以选择使用易查分这样的工具来帮助我们管理…

[git] git基础知识

git是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小型到大型的各种项目 git易于学习&#xff0c;性能极快 什么是版本控制&#xff1f; 版本控制是一种记录文件内容变化&#xff0c;以便将来查阅特定版本修订情况&#xff0c;可以记录文件修改历史…

(学习笔记-进程管理)多线程冲突如何解决

对于共享资源&#xff0c;如果没有上锁&#xff0c;在多线程的环境里&#xff0c;很有可能发生翻车。 竞争与合作 在单核 CPU 系统里&#xff0c;为了实现多个程序同时运行的假象&#xff0c;操作系统通常以时间片调度的方式&#xff0c;让每个进程每次执行一个时间片&#xf…

现在国家正规相亲平台有哪些?盘点五款安全值得使用的相亲软件

随着互联网的普及&#xff0c;越来越多的人选择通过相亲软件寻找自己的另一半。但是&#xff0c;在众多相亲软件中靠谱的相亲软件有哪些呢&#xff0c;该如何选择&#xff1f;本文将盘点几款安全靠谱的相亲软件&#xff0c;可以了解看看哪个适合你。 第一款&#xff1a;一伴婚…