mysql用户管理知识点

1、权限表

        1.1、user表

                1.1.1、用户列

                        Host、User、Password分别表示主机名、用户名、密码

                1.1.2、权限列

                        决定了用户的权限,描述了在全局范围内允许对数据和数据库进行操作。

                1.1.3、安全列

                        安全列有6个字段,其中两个是ssl相关的,2个是x509相关的,另外2个是授权插件相关的。

                        ssl用于加密,x509标准用于标识用户,plugin字段标识可以用于验证用户身份的插件。

                1.1.4、资源控制列

                        用来限制用户使用的资源,包含4个字段,分别为:

                                1)、max_questions:用户每小时允许执行的查询操作次数。

                                2)、max_updates:用户每小时允许执行的更新操作次数。

                                3)、max_connections:用户每小时允许执行的连接操作次数。

                                4)、max_user_connections:用户允许同时建立的连接次数。

        1.2、db表和host表

                此两个表针对的是数据库。

                1.2.1、用户列

                        db表:Host、User、Db

                        host表:Host、Db

                1.2.2、权限列

        1.3、tables_priv表和cloumns_priv表

                tables_priv表用来对表设置权限;cloumns_priv表用来对表的某一列设置权限。

                tables_priv表有8个字段,各字段说明如下:

                1)、Host、Db、User、Table_name:主机名、数据库名、用户名、表名

                2)、Grantor:表示修改该记录的用户。

                3)、Timestamp:表示修改该记录的时间。

                4)、Table_priv:表示对表的操作权限包括Select、Insert、Update、Delete、Create、Drop、Grant、References、Index和Alter

                5)、Cloumn_priv:表示对表中的列的操作权限,包括Select、Insert、Update、References。

                        cloumns_priv表只有7个字段,Host、Db、User、Table_name、Cloumn_name、Timestamp、Cloumn_priv。

                        Cloumn_name表示指定对哪些数据列具有操作权限。

        1.4、procs_priv表

                procs_priv表可以对存储过程和存储函数来设置操作权限。

                procs_priv表有8个字段,各字段说明如下:

                1)、Host、Db、User:主机名、数据库名、用户名

                2)、Routime_name:表示存储过程或函数的名称。

                3)、Routine_type:表示存储过程或函数的类型。有两个值,分别是:FUNCTION和PROCEDURE。

                4)、Grantor:表示插入或修改该记录的用户。

                5)、Proc_priv:表示拥有的权限,包括Execute、Alter Routine、Grant 3种。

                6)、Timestamp:表示修改该记录的时间。

2、账户管理

        2.1、登陆和退出MYSQL服务器

                通过mysql -help命令查看mysql命令帮助信息,mysql的命令常用参数如下:

                1)、-h 主机名,可以使用该参数指定主机名或IP,如果不指定,则默认为localhost。

                2)、-u 用户名,可以使用该参数指定用户名。

                3)、-p 密码,可以使用该参数指定密码。注意:该参数后面的字符串h和-p之间不能有空格。

                4)、-P 端口号,该参数后面接MYSQL服务器端口号,默认为3306.

                5)、数据库名,可以在命令的最后指定数据库名。

                6)、-e 执行sql语句。

        2.2、新建普通用户

                2.2.1、使用CREATE USER 语句创建新用户

CREATE USER user_specification [,user_specification]...user_specification:'user'@'host'[IDENTIFIED BY [PASSWORD] 'password' | IDENTIFINED WITH auth_plugin [AS 'auth_string']]

                        user:表示创建的用户的名称。

                        host:表示允许登陆的用户主机名称。

                        IDENTIFIED BY:表示用来设置用户的密码;

                        [PASSWORD]:表示使用哈希值设置密码,该参数可选。

                        'password':表示用户登录时使用的普通明文密码。

                        IDENTIFINED WITH:为用户指定一个身份验证插件。

                        auth_plugin:是插件的名称,插件的名称可以是一个带单引号的字符串,或者带引号的字符串。

                        auth_string:是可选的字符串参数,该参数将传递给身份验证插件,由该插件解释该参数的意义。

                2.2.2、使用GRANT语句创建新用户。

                        CREATE USER语句创建的新用户没有任何权限,GRANT语句不仅可以创建新用户,还可以在创建的同时

                        对用 户授权。                        

                        格式:

GRANT privileges ON db.tableTO 'user'@'host' [IDENTIFIED BY 'password'] [,user[IDENTIFIED BY 'password']][WITH GRANT OPTION];

                        privileges:表示赋予用户的权限类型。

                        db.table:表示用户的权限所作用的数据库中的表。

                        IDENTIFIED BY:表示用来设置用户的密码。

                        'password':表示用户登录时使用的普通明文密码。

                        WITH GRANT OPTION:为可选参数,表示对新建的用户赋予GRANT权限,即该用户可对其他用户赋予权限

                2.2.3、直接操作MYSQL用户表

INSERT INTO mysql.user(Host,User,Password,[privilegelist])VALUES('host','username',PASSWORD('password'),privilegevaluelist);

                        用户添加成功后还需要使用 FLUSH PRIVILEGES命令,告诉服务器重新加载授权表(重启服务器也会重新加载授权表)

        2.3、删除普通用户

                2.3.1、使用DROP USER语句删除用户

DROP USER user[,user]

                2..3.2、使用DELETE语句删除用户

DELETE FROM MYSQL.user WHERE host='hostname' and user='username';

        2.4、root用户修改自己的密码

                2.4.1、使用mysqladmin命令在命令行指定新密码

mysqladmin -u username -h localhost -p password 'newpwd'

                2.4.2、修改MYSQL数据库的user表

UPDATE mysql.user set Password=PASSWORD('rootpwd') WHERE User='root' and Host='localhost'

                        执行UPDATE语句后,需要执行FLUSH PRIVILEGES语句重新加载用户权限。

                2.4.3、使用SET语句修改root用户密码

SET PASSWORD=PASSWORD('rootpwd');

                        需要执行FLUSH PRIVILEGES语句重新加载用户权限。

        2.5、root用户修改普通用户密码

                2.5.1、使用set语句修改普通用户密码

SET PASSWORD FOR 'user'@'host'=PASSWORD('somepassword');

                2.5.2、使用UPDATE修改普通用户密码

UPDATE mysql.user set Password=PASSWORD('rootpwd') WHERE User='userName' and Host='hostName'

                        执行UPDATE语句后,需要执行FLUSH PRIVILEGES语句重新加载用户权限。

                2.5.3、使用GRANT语句修改普通用户密码

                        在全局级别使用GRANT USAGE语句指定某个账户的密码而不影响账户当前权限。

GRANT USAGE ON *.* TO 'someuser'@'%' IDENTIFIED BY 'somepassword';

        2.6、普通用户修改密码

SET PASSWORD=PASSWORD('newpwd');

                需要执行FLUSH PRIVILEGES语句重新加载用户权限。

        2.7、root用户密码丢失的解决办法

                2.7.1、使用 --skip-grant-tables选项启动MySQL服务

                        windows下:(先切换到MYSQL的bin目录下)

                                mysqld命令如下: 

mysqld --skip-grant-tables

                                mysqld-nt命令如下:                       

 mysqld-nt --skip-grant-tables

                        linux下:

                                mysqld_self命令如下:

mysqld_self --skip-grant-tables user=mysql

                                /etc/init.d/mysql命令如下:

/etc/init.d/mysql start-mysqld --skip-grant-tables user

                2.7.2、使用root用户登录,重新设置密码

                        windows下:

                        1)、使用net stop mysql命令停止MYSQL服务进程

                        2)、在命令行输入mysqld --skip-grant-tables选项启动MySQL服务

                        3)、打开另外一个命令窗口,输入不加密码的登录命令。

                        4)、登录成功后可以使用UPDATE语句h或者使用mysqladmin命令重新设置root密码

                        5)、加载权限表:需要执行FLUSH PRIVILEGES语句重新加载用户权限。

3、权限管理

        3.1、MySQL各种权限

        3.2、授权

                3.2.1、全局层级

                        全局权限适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。

                        GRANT ALL ON *.* 和 REVOKE ALL ON *.*只授予和撤销全局权限

                3.2.2、数据库层级

                        数据库权限适用于一个给定数据库中所有目标。这些权限存储在mysql.db和mysql.host表中。

                        GRANT ALL ON db_name.* 和 REVOKE ALL ON db_name.*只授予和撤销数据库权限

                3.2.3、表层级

                        表权限适用于一个给定表中所有列。这些权限存储在mysql.tables_priv表中。

                        GRANT ALL ON db_name.table_name 和 REVOKE ALL ON db_name.table_name只授予和撤销表权限

                3.2.4、列层级

                        列权限适用于一个给定表中单一列。这些权限存储在mysql.columns_priv表中。

                3.2.5、子程序层级

                        CREATE ROUTINE、ALTER ROUTINE、EXECUTE和GRANT权限适用于已存储的子程序。

        3.3、收回权限

                3.3.1、收回所有用户的所有权限

                        REVOKE ALL PRIVILEGES,GRANT OPTION

     REVOKE ALL PRIVILEGES ON db_name.* FROM 'new_user'@'localhost';

                3.3.2、收回指定的权限

REVOKE priv_type[(columns)][,priv_type[(columns)]]...ON table1,table2,....,tablenFROM 'user'@'host'[,'user'@'host'...]

        3.4、查看权限

       SHOW GRANTS FOR 'user'@'host'

4、访问控制

        4.1、连接核实阶段

        4.2、请求核实阶段

5、安全考虑

        通常建议避免使用超级用户进行日常操作,而是创建具有特定权限的普通用户。

        定期审查并更新用户权限,确保安全

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

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

相关文章

敦煌网、ebay、速卖通等平台一直被差评怎么办?

在电商行业里一直都有一句话,有评行走天下,无评寸步难行 而没有review打造爆款的案例是少之甚少,众所周知,review已经成为用户衡量一件商品的标尺,目前我也是看到一个文章上面写到,一个卖家表示自己平时运…

形如SyntaxError: EOL while scanning string literal,以红色波浪线形式在Pycharm下出现

背景: 新手在学习Python时可能会出现如下图所示的报错 下面分情况教大家如何解决 视频教程【推荐】: 形如SyntaxError: EOL while scanning string literal,以红色波浪线形式在Pycharm下出现 过程: 问题概述: 简单…

React中使用 ts 后,craco库配置别名时需要注意什么?

文章目录 前言编译报错如下解决方式总结 前言 我们都知道craco库可以用来覆盖react配置,如设置别名等。但是在项目使用 Typescript 后,我们需要额外配置,否则会造成编译报错。 详细craco配置可以查看之前文章: 项目初始化与配置…

探索 LLM 预训练的挑战,GPU 集群架构实战

万卡 GPU 集群实战:探索 LLM 预训练的挑战 一、背景 在过往的文章中,我们详细阐述了LLM预训练的数据集、清洗流程、索引格式,以及微调、推理和RAG技术,并介绍了GPU及万卡集群的构建。然而,LLM预训练的具体细节尚待进一…

Vue06-el与data的两种写法

一、el属性 用来指示vue编译器从什么地方开始解析 vue的语法,可以说是一个占位符。 1-1、写法一 1-2、写法二 当不使用el属性的时候: 两种写法都可以。 v.$mount(#root);写法的好处:比较灵活: 二、data的两种写法 2-1、对象式…

【面试干货】SQL中count(*)、count(1)和count(column)的区别与用法

【面试干货】SQL中count(*)、count(1)和count(column)的区别与用法 1、count(*)2、count(1)3、count(column) 💖The Begin💖点点关注,收藏不迷路💖 在SQL中&a…

CSS函数:fit-content与matrix的使用

网格函数 fit-content()属于网格函数,除此之外的网格函数还有:CSS函数: 实现数据限阈的数字函数。顾名思义,这三个函数只能在网格布局中使用。fit-content()函数主要是用于给定布局可用大小,适应内容,其功…

MySQL事务与MVCC

文章目录 事务和事务的隔离级别1.为什么需要事务2.事务特性1_原子性(atomicity)2_一致性(consistency)3_持久性(durability)4_隔离性(isolation) 3.事务并发引发的问题1_脏读2_不可重…

基于小波域优化Savitzky–Golay滤波器的脑电图信号的运动伪影去除方法(MATLAB R2018A)

在获取或采集数据的过程中,不可避免地将噪声引入到数据中,噪声的存在使得原始数据发生变异,对数据的处理及分析产生严重地影响。常用的去噪模型有平滑去噪、均值去噪。其中,平滑去噪又包括移动平均平滑法和Savitzky-Golay卷积平滑…

一周学会Django5 Python Web开发 - Django5内置Auth认证系统-用户注册实现

锋哥原创的Python Web开发 Django5视频教程: 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计57条视频,包括:2024版 Django5 Python we…

keil下载及安装(社区版本)

知不足而奋进 望远山而前行 目录 文章目录 前言 Keil有官方版本和社区版本,此文章为社区版本安装,仅供参考。 1.keil MDK 2.keil社区版介绍 3.keil下载 (1)打开进入登录界面 (2)点击下载,跳转到信息页面 (3)填写个人信息,点击提交 (4)点击下载…

韩国Neowine推出第三代强加密芯片ALPU-CV

推出第三代加密芯片;是ALPU系列中的高端IC;是一款高性能车规级加密芯片;其加密性更强、低耗电、体积小;使得防复制、防抄袭板子的加密性能大大提升,该芯片通过《AEC-Q100》认证,目前已经在国产前装车辆配件…

VMware Workstation虚拟机安装 CentOS 7.9 后ping ip地址出现错误:Network is unreachable

VMware Workstation虚拟机安装 CentOS 7.9 后ping ip地址出现错误:Network is unreachable 解决步骤: 进入目录 进入/etc/sysconfig/network-scripts/, cd /etc/sysconfig/network-scripts/修改文件 vi ifcfg-ens33变更项 ONBOOTyes保存…

算法学习笔记(7.6)-贪心算法(霍夫曼编码)

目录 1.什么是霍夫曼树 2.霍夫曼树的构造过程 3.霍夫曼编码 3.1具体的作用-频率统计 ##实战题目 1.什么是霍夫曼树 给定N个权值作为N个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也…

ast.js是什么?

在devtools分析网站时,出现了ast.js的页面。那么,什么是ast.js?它有什么用? 经查询,AST是抽象语法树(Abstract Syntax Tree)也称为AST语法树,指的是源代码语法所对应的树状结构。也就是说&…

vue3+uniapp

1.页面滚动 2.图片懒加载 3.安全区域 4.返回顶部,刷新页面 5.grid布局 place-self: center; 6.模糊效果 7.缩放 8.微信小程序联系客服 9.拨打电话 10.穿透 11.盒子宽度 12.一般文字以及盒子阴影 13.选中文字 14.顶部安全距离 15.onLoad周期函数在setup语法糖执行后…

基于GTX 8B10B编码的自定义PHY上板测试(高速收发器十四)

前文整理了GTX IP,完成了自定义PHY协议的收发模块设计,本文将通过光纤回环,对这些模块上板测试,首先需要编写一个用于生成测试数据的用户模块。 1、测试数据生成模块 本模块用于生成自定义PHY协议的测试数据,通过axi_…

期望18K,4年前端Cvte 视源股份一面挂

一面 1、自我介绍?毕业的时候一直在 xx 公司,你基本都在做什么项目? 2、你讲一下你主要负责哪一块的?balabala 3、你们的 json 是怎么定义组件间的联动的? 4、怎么确定区分两个 input? 5、你们是怎么触…

软件三班20240605

文章目录 1.创建工程和模块2.添加 web支持3.创建前端代码4.添加servlet 依赖5. 代码6.案例2 1.创建工程和模块 2.添加 web支持 方法1 方法2 3.创建前端代码 4.添加servlet 依赖 5. 代码 <!DOCTYPE html> <html lang"en"> <head><meta c…