【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, '李明');

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【复盘】2024年终总结

工作 重构风控系统 今年上半年其实就是整体重构系统,经历了多次加班的,其中的辛酸苦辣只有自己知道,现在来看的话,其实对自己还有一定的成长,从这件事情上也明白 绩效能不能拿到A,在分配的任务的时候就决…

美食烹饪互动平台

本文结尾处获取源码。 一、相关技术 后端:Java、JavaWeb / Springboot。前端:Vue、HTML / CSS / Javascript 等。数据库:MySQL 二、相关软件(列出的软件其一均可运行) IDEAEclipseVisual Studio Code(VScode)Navica…

linux-centos-安装miniconda3

参考: 最新保姆级Linux下安装与使用conda:从下载配置到使用全流程_linux conda-CSDN博客 https://blog.csdn.net/qq_51566832/article/details/144113661 Linux上删除Anaconda或Miniconda的步骤_linux 删除anaconda-CSDN博客 https://blog.csdn.net/m0_…

[读书日志]从零开始学习Chisel 第一篇:书籍介绍,Scala与Chisel概述,Scala安装运行(敏捷硬件开发语言Chisel与数字系统设计)

简介:从20世纪90年代开始,利用硬件描述语言和综合技术设计实现复杂数字系统的方法已经在集成电路设计领域得到普及。随着集成电路集成度的不断提高,传统硬件描述语言和设计方法的开发效率低下的问题越来越明显。近年来逐渐崭露头角的敏捷化设…

工厂模式与抽象工厂模式在Unity中的实际应用案例

一、实验目的 实践工厂模式和抽象工厂模式的实际应用。 创建一个小型的游戏场景,通过应用这些设计模式提升游戏的趣味性和可扩展性。 掌握在复杂场景中管理和使用不同类型的对象。 比较在实际游戏开发中不同设计模式的实际效果和应用场景。 学习如何进行简单的性…

vue3+Echarts+ts实现甘特图

项目场景&#xff1a; vue3Echartsts实现甘特图;发布任务 代码实现 封装ganttEcharts.vue <template><!-- Echarts 甘特图 --><div ref"progressChart" class"w100 h100"></div> </template> <script lang"ts&qu…

[Linux]redis5.0.x升级至7.x完整操作流程

1. 从官网下载最新版redis&#xff1a; 官网地址&#xff1a;https://redis.io/download 注&#xff1a;下载需要的登录&#xff0c;如果选择使用github账号登录&#xff0c;那么需要提前在github账号中取消勾选“Keep my email addresses private”&#xff08;隐藏我的邮箱…

android 外挂modem模块实现Telephony相关功能(上网,发短信,打电话)

一.背景 当前模块不支持Telephony相关的功能,例如上网、发短信等功能,就需要外挂另一个模块实现此功能,这就是外挂modem模块实现Telephony功能,此篇主要就是说实现外挂modem模块功能中的Framework层实现逻辑,如下流程是在Android 13中实现的外挂pcie模块的流程 二.ril库相…

倍思氮化镓充电器分享:Super GaN伸缩线快充35W

快节奏的时代,在旅游、办公等场景下,一款高效、便捷的充电器可以让我们的生活更便捷、高效。今天就给大家推荐一款倍思氮化镓充电器——Super GaN伸缩线快充35W。它具备多重亮点,可以满足我们在许多场景下的充电需求,成为我们的得力助手。 倍思氮化镓Super GaN伸缩线快充35W的亮…

若依前后端分离项目部署(使用docker)

文章目录 一、搭建后端1.1 搭建流程&#xff1a;1.2 后端零件:1.2.1 mysql容器创建&#xff1a;1.2.2 redis容器创建&#xff1a;1.2.3 Dockerfile内容&#xff1a;1.2.4 构建项目镜像&#xff1a;1.2.5 创建后端容器&#xff1a; 二、前端搭建&#xff1a;2.1 搭建流程&#x…

STM32驱动NRF24L01

一、NRF24L01的相关介绍 1.2 引脚的介绍 关于SPI的引脚就不再说了&#xff0c;这里介绍其余的两个引脚&#xff1a; CE 模块控制引脚&#xff1a;芯片开启信号&#xff0c;激活RX或TX模式 IRQ 模块中断信号输出引脚&#xff1a;其低电平有效&#xff0c;也就是中断时变为低电平…

OneOS操作系统入门-驱动-03:I2C总线及驱动

一、I2C总线 1.1、I2C总线简介 IIC(Inter-Integrated Circuit) 总线是一种由 PHILIPS 公司开发的两线式串行总线&#xff0c;用于连接微控制器以及其外围设备。它是由数据线 SDA 和时钟线 SCL 构成的串行总线&#xff0c;可发送和接收数据&#xff0c;在 CPU 与被控 IC…

【可实战】Bug的判定标准、分类、优先级、定位方法、提交Bug(包含常见面试题)

一、Bug相关概念 &#xff08;一&#xff09;bug判定标准 &#xff08;二&#xff09;常见 Bug 分类 &#xff08;三&#xff09;bug优先级 1.bug严重程度与优先级的关系 有些很严重的Bug&#xff0c;只在极端的条件下才出现&#xff0c;用户碰到的概率很低&#xff0c;这种情…

nginx学习之路-nginx配置https服务器

文章目录 1. 生成证书2. 配置证书1. 拷贝证书文件2. 修改conf/nginx.conf文件内容 3. 查看效果1. 重载配置2. 访问 1. 生成证书 在linux系统下执行&#xff0c;使用openssl命令。&#xff08;windows环境也可以使用cmder&#xff09; # 1. 生成私钥 server2025.key(无密码保护…

【mybatis】Mybatis整体架构解析

从本篇开始我们开始学习mybatis的系列源码&#xff0c;主要的主题可能就是四个方面 从整体把握mybatis系统架构通过一个查询SQL 源码解析核心流程mybatis的缓存机制-源码级别mybatis的插件机制-源码级别spring是如何整合的mybatis框架的 1.整体架构 上述是mybatis的源码&…

DDcGAN_多分辨率图像融合的双鉴别条件生成对抗网络_y译文马佳义

摘要&#xff1a; 在本文中&#xff0c;我们提出了一种新的端到端模型&#xff0c;称为双鉴别条件生成对抗网络&#xff08;DDcGAN&#xff09;&#xff0c;用于融合不同分辨率的红外和可见光图像。我们的方法建立了一个生成器和两个鉴别器之间的对抗博弈。生成器的目的是基于特…

K8s高可用集群之Kubernetes集群管理平台、命令补全工具、资源监控工具部署及常用命令

K8s高可用集群之Kubernetes管理平台、补全命令工具、资源监控工具部署及常用命令 1.Kuboard可视化管理平台2.kubectl命令tab补全工具3.MetricsServer资源监控工具4.Kubernetes常用命令 1.Kuboard可视化管理平台 可以选择安装k8s官网的管理平台&#xff1b;我这里是安装的其他开…

计算机网络-数据链路层(CSMA/CD协议,CSMA/CA协议)

2.2 ppp协议 点对点协议ppp是目前使用最广泛的点对点数据链路层协议。 2.3 媒体接入控制基本概念 共享信道要着重考虑的一个问题就是如何协调多个发送和接收站点对一个共享传输媒体的占用&#xff0c;即媒体接入控制MAC。 2.3.1 静态划分信道 频分复用 时分复用 波分复用 码分复…

富芮坤FR800X系列之软件开发工具链(如IDE、编译器、调试器等)

文章目录 一、IDE&#xff08;集成开发环境&#xff09;二、编译器三、调试器四、其他辅助工具五、小结 FR800x系列作为一款低功耗蓝牙芯片&#xff0c;其软件开发工具链对于开发者来说至关重要。以下是对FR800x软件开发工具链的详细介绍&#xff0c;包括IDE&#xff08;集成开…

Oracle数据库如何找到 Top Hard Parsing SQL 语句?

有一个数据库应用程序存在过多的解析问题&#xff0c;因此需要找到产生大量硬解析的主要语句。 什么是硬解析 Oracle数据库中的硬解析&#xff08;Hard Parse&#xff09;是指在执行SQL语句时&#xff0c;数据库需要重新解析该SQL语句&#xff0c;并创建新的执行计划的过程。这…