【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.mzph.cn/diannao/64078.shtml

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

相关文章

SpringSecurity使用教程

一、基本使用 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架,专门设计用于保护基于 Spring 的应用程序。它不仅提供了全面的安全服务,还与 Spring 框架及其生态系统(如 Spring Boot、Spring MVC 等)紧密集…

docker 安装mysql 5.7 详细保姆级教程

1. 安装mysql(5.7) docker pull mysql:5.7 若是拉取不了,可以配置下 docker 源 2. 查看是否安装成功 docker images 下图就是成功了 3.创建mysql专用目录、数据挂载目录、配置文件目录 ,演示目录在于/home/下 //命令逐条执行cd /home/ mkdir mysql …

fixture装饰器

普通代码案例: python本身执行 import pytestdef init_new():print("init_new...")return Truedef test_case(init_new):if init_new is True:print("如果init_new返回True,就执行用例test_case")if __name__ __main__:#用python本…

【韩顺平Java JDBC学习笔记】

Java JDBC 文章目录 jdbc概述基本介绍jdbc原理示意图 jdbc快速入门JDBC程序编写步骤获取数据库连接5种方式ResultSet[结果集]SQL注入Statement PreparedStatement预处理好处基本使用 JDBC APIJDBCUtils工具类使用工具类 事务基本介绍应用实例模拟经典的转帐业务 - 未使用事务模…

KeepAlive与RouterView缓存

参考 vue动态组件<Component>与<KeepAlive> KeepAlive官网介绍 缓存之keep-alive的理解和应用 Vue3Vite KeepAlive页面缓存问题 vue多级菜单(路由)导致缓存(keep-alive)失效 vue3 router-view keeperalive对于同一路径但路径…

【经验分享】搭建本地训练环境知识点及方法

最近忙于备考没关注,有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源,但我以交流、交换为主,笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟,为了避免更多人花没必要的钱,所以决定公…

为什么要使用数据仓库?

现状和需求 大量的企业经营性数据(订单,库存,原料,付款等)在企业的业务运营系统以及其后台的(事务型)数据库中产生的。 企业的决策者需要及时地对这些数据进行归类分析,从中获得企业运营的各种业务特征&a…

CSS|07 标准文档流

标准文档流 一、什么是标准文档流 在制作的 HTML 网页和 PS 画图软件画图时有本质上面的区别: HTML 网页在制作的时候都得遵循一个“流的规则:从左至右、从上至下。 使用 Ps 软件画图时可以在任意地方画图。 <!DOCTYPE html> <html lang"en"> <hea…

JS设计模式之访问者模式

前言 访问者模式&#xff08;Visitor Pattern&#xff09;是一种 行为设计模式&#xff0c;它允许在不改变对象结构的情况下&#xff0c;定义新的操作。 这种模式通过将操作封装在访问者对象中&#xff0c;使得可以在不修改被访问对象的情况下&#xff0c;增加新的功能。 本…

快速上手:利用 FFmpeg 合并音频文件的实用教程

FFmpeg 是一个强大的多媒体处理工具&#xff0c;能够轻松地对音频、视频进行编辑和转换。本文将介绍如何使用 FFmpeg 来合并&#xff08;拼接&#xff09;多个音频文件为一个单一文件。无论您是想要创建播客、音乐混音还是其他任何形式的音频项目&#xff0c;这都是一个非常实用…

使用idea创建一个JAVA WEB项目

文章目录 1. javaweb项目简介2. 创建2.1 idea新建项目2.2 选择&#xff0c;命名2.3 打开2.4 选择tomcat运行2.5 结果 3. 总结 1. javaweb项目简介 JavaWeb项目是一种基于Java技术的Web应用程序&#xff0c;主要用于开发动态网页和Web服务。这种项目能够构建在Java技术栈之上&a…

鸿蒙NEXT开发案例:九宫格随机

【引言】 在鸿蒙NEXT开发中&#xff0c;九宫格抽奖是一个常见且有趣的应用场景。通过九宫格抽奖&#xff0c;用户可以随机获得不同奖品&#xff0c;增加互动性和趣味性。本文将介绍如何使用鸿蒙开发框架实现九宫格抽奖功能&#xff0c;并通过代码解析展示实现细节。 【环境准…

金融信息分析基础(1)

1.金融数据 金融数据分为&#xff1a;交易数据&#xff08;低频数据&#xff0c;高频数据&#xff0c;超高频数据&#xff09;&#xff0c;报表数据&#xff08;财务报表&#xff0c;研报&#xff09;&#xff0c;金融社交媒体数据 低频数据&#xff1a; 以日、周、月、季、年…

.NET 技术系列 | 通过CreatePipe函数创建管道

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

docker安装、升级、以及sudo dockerd --debug查看启动失败的问题

1、docker安装包tar下载地址 Index of linux/static/stable/x86_64/ 2、下载tgz文件并解压 tar -zxvf docker-24.0.8.tgz 解压后docker文件夹下位docker相关文件 3、将老版本docker相关文件&#xff0c;备份 将 /usr/bin/docker下docker相关的文件&#xff0c;mv到备份目录…

uniapp——H5中使用富文本编辑器,如何使用。

一、插件市场 去插件市场找到这个插件https://ext.dcloud.net.cn/plugin?id14726 二、引入 找到自己项目引入 项目里面多了很多文件 三、使用 找到A页面&#xff0c;在里面引入组件 <view class"editBox"><sp-editor exportHtml"handleExpor…

arXiv-2024 | VLM-GroNav: 基于物理对齐映射视觉语言模型的户外环境机器人导航

作者&#xff1a; Mohamed Elnoor, Kasun Weerakoon, Gershom Seneviratne, Ruiqi Xian, Tianrui Guan, Mohamed Khalid M Jaffar, Vignesh Rajagopal, and Dinesh Manocha单位&#xff1a;马里兰大学学院公园分校原文链接&#xff1a;VLM-GroNav: Robot Navigation Using Phys…

音频客观测评方法PESQ

一、简介 语音质量感知评估&#xff08;Perceptual Evaluation of Speech Quality&#xff09;是一系列的标准&#xff0c;包括一种用于自动评估电话系统用户所体验到的语音质量的测试方法。该标准于2001年被确定为ITU-T P.862建议书[1]。PESQ被电话制造商、网络设备供应商和电…

Gitlab服务管理和仓库项目权限管理

Gitlab服务管理 gitlab-ctl start # 启动所有 gitlab 组件&#xff1b; gitlab-ctl stop # 停止所有 gitlab 组件&#xff1b; gitlab-ctl restart # 重启所有 gitlab 组件&#xff1b; gitlab-ctl status …

浏览器插件开发实战

浏览器插件开发实战 [1] 入门DEMO一、创建项目二、创建manifest.json三、加载插件四、配置 service-worker.js五、以书签管理器插件为例manifest.jsonpopup.htmlpopup.js查看效果 [2] Vue项目改造成插件一、复习Vue项目的结构二、删除、添加个别文件三、重写build [3] 高级开发…