【MySQL 保姆级教学】用户管理和数据库权限(16)

数据库账户管理是指对数据库用户进行创建、修改和删除等操作,以控制用户对数据库的访问权限。通过账户管理,可以设置用户名、密码、主机地址等信息,确保数据库的安全性和可控性。例如,使用 CREATE USER 创建用户,ALTER USER 修改用户密码。数据库权限是指数据库为用户授予的操作权限,包括对数据库、表或字段的访问和操作权限,例如 SELECT(查询)、INSERT(插入)、UPDATE(更新)和 DELETE(删除)。权限的分配通过 GRANT 命令进行,撤销权限则使用 REVOKE 命令。合理的权限设置可以限制用户操作,保护数据的安全和完整性。

💬 欢迎讨论:如对文章内容有疑问或见解,欢迎在评论区留言,我需要您的帮助!

👍 点赞、收藏与分享:如果这篇文章对您有所帮助,请不吝点赞、收藏或分享,谢谢您的支持!

🚀 传播技术之美:期待您将这篇文章推荐给更多对需要学习数据库用户管理和数据库权限、低代码开发感兴趣的朋友,让我们共同学习、成长!

1. 用户管理

1.1 什么是用户管理?

一般,下载好MySQL后直接使用的是root账户,root具有对数据库操作的所有权限。

用户管理 指的是对数据库用户的创建、删除、授权、修改权限以及密码管理等一系列操作。这些管理操作用于控制谁可以访问数据库、可以执行哪些操作,确保数据库的安全性和灵活性。

在MySQL中可以创建多个用户
在这里插入图片描述
如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用MySQL的用户管理。

在命令行中可以使用命令来查询当前使用的用户:

select user();

1.2 用户信息

MySQL以表结构的形式进行管理用户。安装MySQL后,默认有一个mysqll数据库
命令:show databases;
在这里插入图片描述
然后使用mysql数据库,查询user表:
命令:

use mysql;# 查询mysql数据库中的表
show tables;# 查询user表
select * from user\G#\G 将查询结果按 纵向显示 而不是默认的 横向表格显示。
#这对于结果数据内容较多、列较多时,能够使查询结果更易于阅读。

在这里插入图片描述
可以值查看用户的账号、登录主机和密码

select User, Host, authentication_string from user;

字段解释
user:用户名
host:表示这个用户可以从哪个主机登陆,如果是localhost,表示只能从本机登陆
authentication_string: 用户密码通过password函数加密后的
*_priv:用户拥有的权限

1.3 创建用户

可以直接向user表中插入数据,但是这样不太符合用户的创建,创建用户的命令:

create user 'user_name'@'登录主机/ip' identified by 'user_name';

登录主机必须填写;创建的密码会被加密,在user表中的密码是经过加密后的密码

示例:

  1. 创建一个可以在任意主机登录该MySQL的账户:

    create user 'test_user'@'%' identified by 'Dhj123456.';# 然后使用刷新命令
    flush privileges
    

    %表示可以在任意主机登录。

    注意:不要忘记使用刷新命令:flush privileges;privilege 单词的意思就是:权限

  2. 创建一个只能在本机登录的MySQL账户

    create user 'test_user'@'localhost' identified by 'Dhj123456.';
    

查询创建好的用户:

# 进入mysql数据库
use mysql# 查询user表
select User,Host,authentication_string from user;

在这里插入图片描述
前三个表时数据库默认有的。

创建用户时报错的解决方法

  1. 创建账号时发生报错
    在这里插入图片描述
    这是因为你在/etc/my.cnf文件中设置了--skip-grant-tables(登录MySQL时不需要输入密码)
    先在MySQL窗口找中修改root账号的密码:

    UPDATE user SET authentication_string=PASSWORD('密码') WHERERE User='root';
    FLUSH PRIVILEGES;
    

    再在Linux命令行中输入:vim /etc/my.cnf找到--skip-grant-tables这一行,在开头加入#进行注解,或者直接删除。
    然后再进入MySQL修改root账户的密码:

    ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
    

    最后再创建新账户:

    create user 'test_user'@'%' identified by '123456';
    
  2. 在设置密码的时候,因为mysql本身的认证等级比较高,一些简单的密码无法设置,会爆出
    如下报错:

    – ERROR 1819 (HY000): Your password does not satisfy the current policy
    requirements

    查看密码设置相关要求:

    SHOW VARIABLES LIKE 'validate_password%`;
    

1.4 删除用户

语法:

drop user '用户名'@'主机/ip';

示例

删除test_user用户:

drop user 'test_user'@'%';

在这里插入图片描述
在这里插入图片描述

注意删除用户的时候必须带上 ‘用户名’@‘主机名’

1.5 修改用户的密码

1.5.1 语法和password函数

语法

  1. 自己改自己的密码:

    set password = password('新密码');
    
  2. root用户修改指定用户的密码

    set password for '用户名'@'主机名' = password('新密码');
    

最规范的语法

alter user '用户名'@'用户名' identified by '新密码'; 

password函数

  • PASSWORD() 函数会对输入的字符串进行加密,返回一个加密后的字符串。
  • 这种加密方式曾用于存储 MySQL 用户账户的密码。
  • 注意:从 MySQL 5.7.6 开始,PASSWORD() 函数已经被弃用,8.0 版本中已被移除

1.5.2 示例

创建一个用户:

create user 'test_usr'@'localhost' identified by 'Dhj123456.';flush privileges;

在这里插入图片描述
修改用户的密码:

alter user 'test_user'@'localhost' identified by 'DHJ123456.';

在这里插入图片描述
再创建一个Linux命令窗口,用修改后的密码连接:

mysql -u test_user -p 

在这里插入图片描述
注意:在 MySQL 8.0 及之后的版本中,ALTER USERCREATE USER 等语句会自动刷新权限,无需再手动执行 FLUSH PRIVILEGES 命令。

在 MySQL 8.0 及之前的版本中,在未使用 flush privileges之前,密码不会被修改,使用 flush privileges 后密码才会被修改。

2. 数据库的权限

2.1 数据库的权限列表

权限上下文
CREATECreate_priv数据库、表或索引
DROPDrop_priv数据库或表
GRANT OPTIONGrant_priv数据库、表或保存的程序
REFERENCESReferences_priv数据库或表
ALTERAlter_priv
DELETEDelete_priv
INDEXIndex_priv
INSERTInsert_priv
SELECTSelect_priv
UPDATEUpdate_priv
CREATE VIEWCreate_view_priv视图
SHOW VIEWShow_view_priv视图
ALTER ROUTINEAlter_routine_priv保存的程序
CREATE ROUTINECreate_routine_priv保存的程序
EXECUTEExecute_priv保存的程序
FILEFile_priv服务器主机上的文件访问
CREATE TEMPORARY TABLESCreate_tmp_table_priv服务器管理
LOCK TABLESLock_tables_priv服务器管理
CREATE USERCreate_user_priv服务器管理
PROCESSProcess_priv服务器管理
RELOADReload_priv服务器管理
REPLICATION CLIENTRepl_client_priv服务器管理
REPLICATION SLAVERepl_slave_priv服务器管理
SHOW DATABASESShow_db_priv服务器管理
SHUTDOWNShutdown_priv服务器管理
SUPERSuper_priv服务器管理

2.2 给用户权限

2.2.1

刚创建的用户没有任何权限。需要给用户授权。

语法

grant 权限列表 on.对象名 to '用户名'@'主机名' [identified by '密码']; 

说明

权限列表,多个权限用逗号分开:

grant select on …
grant select, delete, create on …
grant all [privileges] on … – 表示赋予该用户在该对象上的所有权限

. : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)
identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户

2.2.2 示例

root用户和新建的test_user用户查询数据库:

root用户:

show databases;

在这里插入图片描述

test_user用户:

show databases;

在这里插入图片描述
很明显,root用户查询出来的数据库比test_user用户多。

使用root用户给test_usr用户在 dm数据库上所有的权限:

grant all privileges on dm.* to 'test_user'@'localhost';flush privileges;

在这里插入图片描述
使用test_user用户再次查询数据库:

show databases;

在这里插入图片描述

2.3 回收权限

语法

revoke 权限列表 on.对象名 from '用户名'@'主机名';

示例

使用root用户回收test_user用户对数据库dm插入的权限:

revoke insert on dm.* from 'test_user'@'localhost';flush privileges;

在这里插入图片描述
使用test_user用户:

use dm;create table test_table(
id int;
name varchar(10)
);

在这里插入图片描述
然后向表中插入数据:

insert into test_user (id,name) values(1, '李明');

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32+WIFI获取网络时间+8位数码管显示+0.96OLED显

资料下载地址:STM32WIFI获取网络时间8位数码管显示0.96OLED 1、项目介绍 主控芯片STM32C8T6 接线:串口1:PA9 PA10 OELD :PB6 PB7 数码管使用:MAX7219 8位数码管 Max7219_pinCLK PAout(5) Max7219_pinC…

决定系数(R²分数)——评估回归模型性能的一个指标

目录 1.定义 2.计算举例 3. 结果分析 1.定义 R(R平方)分数,也称为决定系数,是用来评估回归模型性能的一个指标。它表示自变量解释因变量变异性的比例。R分数的取值范围通常在0到1之间,其值越接近1,说明…

代码随想录算法训练营day23

代码随想录算法训练营 —day23 文章目录 代码随想录算法训练营前言一、39. 组合总和二、40.组合总和II三、131.分割回文串总结 前言 今天是算法营的第23天,希望自己能够坚持下来! 今日任务: ● 39. 组合总和 ● 40.组合总和II ● 131.分割回…

【电子通识】PWM驱动让有刷直流电机恒流工作

电机的典型驱动方法包括电压驱动、电流驱动以及PWM驱动。本文将介绍采用PWM驱动方式的恒流工作。 首先介绍的是什么是PWM驱动的电机恒流工作,其次是PWM驱动电机恒流工作时电路的工作原理。 PWM驱动 当以恒定的电流驱动电机时,电机会怎样工作呢&#xff1…

基于html5实现音乐录音播放动画源码

源码介绍 基于html5实现音乐录音播放动画源码是一款类似Shazam的UI,点击按钮后,会变成为一个监听按钮。旁边会有音符飞入这个监听按钮,最后转换成一个音乐播放器。 效果预览 源码获取 基于html5实现音乐录音播放动画源码

精度论文:【Coordinate Attention for Efficient Mobile Network Design】

Coordinate Attention for Efficient Mobile Network Design 《用于高效移动网络设计的坐标注意力机制》1.引言2.相关工作2.1 移动网络架构2.2 注意力机制 3. 坐标注意力3.1. 回顾SE注意力 (Squeeze-and-Excitation Attention)3.2. 坐标注意力块3.2.1 坐标信息嵌入3.2.2 坐标注…

高等数学学习笔记 ☞ 一元函数微分的基础知识

1. 微分的定义 (1)定义:设函数在点的某领域内有定义,取附近的点,对应的函数值分别为和, 令,若可以表示成,则称函数在点是可微的。 【 若函数在点是可微的,则可以表达为】…

openai swarm agent框架源码详解及应用案例实战

文章目录 简介数据类型Agent类Response类Result类Swarm类run_demo_loop交互式会话 基础应用agent-handsofffunction-callingcontext_variablestriage_agent 高阶应用通用客服机器人(support bot)构建航班服务agent 参考资料 openai 在24年10月份开源了一个教育性质的多agents协…

【测试】——Cucumber入门

📖 前言:Cucumber框架是行为驱动(BDD)框架的一种,通过自然语言站在功能使用者视角,描述编写测试用例。简单来说就是通过feature文件编写脚本,脚本对应java写的方法,会有一个启动器配…

无网络时自动切换备用网络环境

目录 背景目标为什么需要做自动网络切换网络切换手段 网络环境实现思路和代码部署脚本开机自动执行附录连接两个网络时的路由问题 背景 目标 学校实验室有两个网络环境,我电脑使用网线连接稳定但低速的网络A,使用WiFi连接高速但不稳定的网络B。因此&am…

【微服务】1、引入;注册中心;OpenFeign

微服务技术学习引入 - 微服务自2016年起搜索指数持续增长,已成为企业开发大型项目的必备技术,中高级java工程师招聘多要求熟悉微服务相关技术。微服务架构介绍 概念:微服务是一种软件架构风格,以专注于单一职责的多个响应项目为基…

OpenAI 故障复盘 - 阿里云容器服务与可观测产品如何保障大规模 K8s 集群稳定性

本文作者: 容器服务团队:刘佳旭、冯诗淳 可观测团队:竺夏栋、麻嘉豪、隋吉智 一、前言 Kubernetes(K8s)架构已经是当今 IT 架构的主流与事实标准(CNCF Survey[1])。随着承接的业务规模越来越大,用户也在使…

docker+ffmpeg+nginx+rtmp 拉取摄像机视频

1、构造程序容器镜像 app.py import subprocess import json import time import multiprocessing import socketdef check_rtmp_server(host, port, timeout5):try:with socket.create_connection((host, port), timeout):print(f"RTMP server at {host}:{port} is avai…

网络安全-web渗透环境搭建-BWAPP(基础篇)

01--所需系统环境: 虚拟主机系统部署(vmware,虚拟主机创建、虚拟主机网络配置(桥接,便于网络中多个主机都能访问虚拟主机)、虚拟软件功能,快照、克隆、镜像文件加载,ova文件制作&am…

SQL Server中可以通过扩展事件来自动抓取阻塞

在SQL Server中可以通过扩展事件来自动抓取阻塞,以下是详细流程: 开启阻塞跟踪配置: • 执行以下SQL语句来启用相关配置: EXEC sp_configureshow advanced options, 1; RECONFIGURE; EXEC sp_configure blocked process thresh…

SpringBoot环境和Maven配置

SpringBoot环境和Maven配置 1. 环境准备2. Maven2.1 什么是Maven2.2 为什么要学 Maven2.3 创建一个 Maven项目2.4 Maven核心功能2.4.1 项目构建2.4.2 依赖管理2.4.3 Maven Help插件 2.5 Maven 仓库2.5.1本地仓库2.5.2 中央仓库2.5.3 私有服务器, 也称为私服 2.6 Maven设置国内源…

C语言初阶习题【25】strcpy的模拟实现

1. 首先先调用下库函数,看它实现了什么 2. 我们自己实现一个strcpy函数 3. 改进1 把*destnation和source 写上去,使用后置 4. 改进2 这里直接把赋值操作放到了while的判断条件里面,然后while循环语句什么都不做,放了一个空语句…

网络基础1 http1.0 1.1 http/2的演进史

http1.0 1.1 http/2的演进史😎 (连接复用 队头阻塞 服务器推送 2进制分帧) 概述 我们主要关注的是应用层 传输层 http协议发展历史 http的报文结构:起始行 Header Body http的典型特征 http存在的典型问题 Keep Alive机制 chun…

C# XPTable 带图片的增删改查(XPTable控件使用说明十三)

今天完成了一个DEMO, XPtable直接增删改查,带富文本图片,这就是XPtable的优势。需要提示的是关于图片编辑后的保存:使用焦点,过滤掉逐条选择显示图片变化冗余保存数据库。 全部代码: using System.Security.Policy; u…

在 Vue 3 集成 e签宝电子合同签署功能

实现 Vue 3 e签宝电子合同签署功能,需要使用 e签宝提供的实际 SDK 或 API。 e签宝通常提供针对不同平台(如 Web、Android、iOS)的 SDK,而 Web 端一般通过 WebView 或直接使用嵌入式 iframe 来加载合同签署页面。 下面举个 &…