Mysql数据库中的用户管理与授权

news2024/11/24 8:37:21

 1.登录用户的管理

1.1 查看用户密码的信息 

用户信息存放在 mysql 数据库下的 user 表(MySQL 服务下存在一个系统自带的 mysql 数据库)。

 

 

经常使用的查看密码信息的命令:

能看到密码信息:是经过加密后的密码信息 

select user,host,authentication_string from user;

 

 1.2 登录用户的增加

 明文密码创建用户格式:

create user  '用户名'@'源地址'    identified by '密码';

 加密密码创建用户 :

SELECT PASSWORD('密码');    #先获取加密的密码
CREATE USER 'lisi'@'localhost' IDENTIFIED BY PASSWORD '加密的密码';

 

1.3 登录用户用户名的更改 

RENAME USER '旧的用户名'@'旧的主机地址' TO '新的用户名'@'新的主机地址';

 

1.4 删除登录用户

drop user '用户名'@'登录地址';

1.5 查看当前登录的用户

select user();

 1.6 修改用户的密码

普通用户只有修改自身密码的权限

明文密码修改:

set password = password  ('新密码');

root用户是超级管理员,它不仅可以修改自身密码,还能修改其他用户的密码。

set password for '用户'@'登录地址' =password ('密码');

 

1.7 root密码的忘记后的修改找回方法 

 该操作必须是在数据库本机且为root用户,才可进行

第一步:添加跳过的初始配置

vim  /etc/my.cnf
 skip-grant-tables

 

第二步:重启数据库服务 ,修改数据库用户表中root密码

systemctl restart mysql.service
mysql
mysql> UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('123123') where user='root';
 mysql> flush privileges;   #刷新数据库
 ​
 mysql> quit                #退出

第三步:登录测试新密码 

mysql -u root -p

新密码

第四步:撤销添加的免密码认证设置,重启数据库服务 

#删除配置文件中的配置,之后重启服务。
 注意:最后再把/etc/my.conf 配置文件里的skip-grant-tables 删除,并重启mysql服务。
 vim /etc/my.cnf
systemctl restart mysqld.service 

 

找回root密码
1)修改配置文件,在[mysqld]下添加skip-grant-tables
2)重启mysqld服务,使用 mysql 命令直接进入免密进入mysql
3)执行  update mysql.user set authentication_string=password('....') where user='root';
4)还原配置文件,重启服务,使用账号密码验证登录
 

 2.管理登录用户的权限

2.1 常见的用户权限 

权限   权限说明   权限级别
CREATE   创建数据库、表或索引的权限    数据库、表或索引
DROP 删除数据库或表的权限  数据库或表
GRANT OPTION 赋予权限选项数据库或表
REFERENCES  引用权限数据库或表
ALTER 更改表的权限 数据表
DELETE    删除表数据的权限   数据表
INDEX   操作索引的权限 数据表
INSERT 添加表数据的权限数据表
SELECT  查询表数据的权限  数据表
UPDATE   更新表数据的权限  数据表
SHOW VIEW  查看视图的权限 视图
ALTER ROUTINE 更改存储过程的权限  存储过程
CREATE ROUTINE 创建存储过程的权限     存储过程
EXECUTE   执行存储过程权限   存储过程
FILE     服务器主机文件的访问权限 文件管理
CREATE TEMPORARY TABLES   创建临时表的权限服务器管理
LOCK TABLES  锁表的权限 服务器管理
CREATE USER创建用户的权限服务器管理
RELOAD      执行 flush privileges, refresh, reload 等刷新命令的权限服务器管理
SHOW DATABASES  查看数据库的权限服务器管理
ALL [PRIVILEGES]所有权限
USAGE  没有任何权限 
SUPER    超级权限  服务器管理
SHUTDOWN    关闭数据库的权限

   服务器管理

2.2 查看用户已有权限的操作 

SHOW GRANTS; #查看当前用户(自己)的权限

 

SHOW GRANTS FOR 用户名@来源地址; #查看其他用户的权限

2.3 授权操作

[NO_AUTO_CREATE_USER], 即在grant语句中禁止创建空密码的账户,使用grant语法创建用户必须带上 “identified by”关键字设置账户密码,否则就被认为是非法的创建语句。

 

方式一:对存在用户进行授权 

GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'来源地址' [IDENTIFIED BY '密码'];

 权限列表:  用于列出授权使用的各种数据库操作,以逗号进行分隔如"select, insert,update"。 使用"all"表示所有权限(实际上部分权限仍无法使用,只包括大部分权限),可授权执行任何操作。

 ​  数据库名.表名:  用于指定授权操作的数据库和表的名称,其中可以使用通配符*。 例如,使用"mysql.*" 表示授权操作的对象为mysql数据库中的所有表。  ​  '用户名'@'来源地址':  用于指定用户名称和允许访问的客户机地址,即谁能连接、能从哪里连接。 来源地址可以是域名、IP地址,还可以使用“%”通配符,表示某个区域或网段内的所有地址。

 IDENTIFIED BY:  用于设置用户连接数据库时所使用的密码字符串。在新建用户时,若省略"IDENTIFIED BY"部分,则用户的密码将为空。

 

方式二:对不存在的用户进行创建并授权 

 GRANT ALL PRIVILEGES ON *.* TO  '用户名'@'来源地址' IDENTIFIED BY '密码';

2.4 撤销用户权限 

 revoke 权限列表/ALL on 库名.表名 from '用户名'@'来源地址';

 

2.5 用户的远程登录 

 mysql -u 用户名 -p[密码] -h 目标IP/主机名 -P 端口号              #远程连接mysql

 

 总结


 1.用户管理操作


 create user 'username'@'address' identified by 'password';   #创建用户  ​

 select user,host,authentication_string from mysql.user;   #查看用户信息  ​

 rename user old_user to new_user;        #修改用户名  ​

 drop user '用户名'@'来源地址';            #删除用户  ​  

set password = password('XXXX');         #修改当前登录用户的密码  ​

 set password for '用户名'@'来源地址' = password('XXXX');     #修改其他用户的密码  ​

 select user ();      #查看当前登录用户和来源地址  ​

 ###忘记root用户密码的解决方法:  

修改mysql配置文件/etc/my.cnf,在 [mysqld] 配置项下加入 skip-grant-tables

service mysqld restart   #重启服务

 mysql   #免密登陆  

 update mysql.user set authentication_string=password('新密码') where user='root';  

#修改密码 flush privileges; #刷新数据库

2.用户授权操作 


grant 权限列表/ALL ON 库名.表名 to 'username'@'address' identified by '密码';  ​   #授予用户权限  

show grants;     #查看当前用户(自己)的权限                

show grants for 'username'@'address';      #查看其他用户的权限  ​

 revoke 权限列表/ALL on 库名.表名 from 'username'@'address';   #撤销用户的权限  ​  

mysql -u 用户名 -p[密码] -h 目标IP/主机名 -P 端口号             #远程连接mysql

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

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

相关文章

真题详解(关系模型)-软件设计(六十六)

真题详解(ICMP)-软件设计(六十五)https://blog.csdn.net/ke1ying/article/details/130475620 2017年下半年 内存按字节编址,若存储容量为32K*8bit的存储芯片构成地址从A0000H到 DFFFFH的内存,至少需要____片芯片。 解析: DFF…

《Netty》从零开始学netty源码(五十二)之PoolThreadCache

PoolThreadCache Netty有一个大的公共内存容器PoolArena,用来管理从操作系统中获得的内存,在高并发下如果所有线程都去这个大容器获取内存它的压力是非常大的,所以Netty为每个线程建立了一个本地缓存,即PoolThreadCache&#xff…

ReentrantLock实现原理-非公平锁

在线程间通信方式2一节中,我们了解了Lock,Condition和ReentrantLock,学习了简单使用Condition和RentrantLock完成线程间通信,从文章中我们了解到ReentrantLock是Lock接口的一个最常用的实现类,ReentrantLock是独占锁&a…

WEBPACK和ROLLUP构建前端工具库

1. WEBPACK webpack 提供了构建和打包不同模块化规则的库,只是需要自己去搭建开发底层架构。vue-cli,基于 webpack , vue-cli 脚手架工具可以快速初始化一个 vue 应用,它也可以初始化一个构建库。 2. ROLLUP rollup 是一个专门…

prusa2.6.0 树形支撑(有机支撑)Organic体验测试 3d打印及下载失败解决

目前官网没有这个2.6版本,只有2.5.2下载,是没有树形支撑的。如果试用2.6版本,需要从GitHub下载。地址为: https://github.com/prusa3d/PrusaSlicer/releases/tag/version_2.6.0-alpha6 或者点击链接: Release PrusaS…

aop切面调用失效问题排查

应用里有较多的地方访问外部供应商接口,由于公网网络不稳定或者外部接口不稳定(重启,发版,ip切换)的原因,经常报502或者504错误。为了解决HTTP调用的500报错,选择使用spring的retryable注解进行…

Leetcode292. Nim 游戏

Every day a leetcode 题目来源:292. Nim 游戏 解法1:数学推理 让我们考虑一些小例子。 显而易见的是,如果石头堆中只有一块、两块、或是三块石头,那么在你的回合,你就可以把全部石子拿走,从而在游戏中…

李沐动手学深度学习 v2 实战Kaggle比赛:预测房价

前言 最近学习一些深度学习知识,观看了李沐老师的《动手学深度学习》的视频 练习一下 实战Kaggle比赛:预测房价 巩固一下 前面学习的知识, 不coding一下总感觉什么也没学 陆陆续续调了一天 记录一下 导包 %matplotlib inline import numpy…

计算机网络第二章(谢希仁第八版)

作者:爱塔居 专栏:计算机网络 作者简介:大三学生,希望和大家一起进步 文章目录 目录 文章目录 前言 一、物理层的基本概念 1.1 物理层协议的主要任务 1.2 传输媒体(了解) 二、传输方式 2.1 串行传输…

第二十八章 Unity射线检测

本章节我们介绍一下射线。射线就是从一个固定点向一个方向发射出一条直线,在发射过程中需要判断该射线有没有与游戏物体发送碰撞。射线既可以用来检测射击游戏中武器指向目标;又可以判断鼠标是否指向游戏物体。射线的创建方式,一般使用代码来…

11. Kubernetes 开章

本章讲解知识点 Kubernetes 概念为什么要使用 KubernetesKubernetes 的部署架构Kubernetes 基本命令本章主要是针对 Kubernetes 基本概念为读者讲解,读者能有一个大概印象即可,不需要过于斟酌细节,针对 Kubernetes 的概念将在后面章节中详细讲解。 1. Kubernetes 概念 我们…

学习Transformer前言(Self Attention Multi head self attention)

一、前言 一直在做项目,也比较懒没有挤出时间去学习新的东西,感觉停滞很久了,好长一段时间都没有新的知识输入,早就需要就去学习transformer了,因此先来学习注意力机制,本文为个人的一个笔记总结。主要是基…

Linux系统编程(三)—— 文件编程(3)进程环境

一、main函数 现在的格式:int main(int argc, char *argv[])以前的main函数有三个参数,另一个参数就是环境变量 二、进程的终止(两种都要背下来) 2.1 正常终止 (1)从main函数返回 main函数被称为程序的…

第10章:堆

堆是什么? 堆是一种特殊的完全二叉树。 完全二叉树:每层节点都完全填满,最后一层若是没填满,则只缺少右边的节点。所有的节点都大于等于(最大堆)或小于等于(最小堆)它的子节点。jav…

软考——数据结构,算法基础,程序设计语言,法律法规,多媒体基础

数据结构与算法基础 数组与矩阵线性表广义表树与二叉树图排序与查找算法基础及常见算法 数组 稀疏矩阵 直接把(0,0)带入,排除B,C 将(1,1)带入,排除D, 最终…

Python | 人脸识别系统 — 博客索引

本博客为人脸识别系统的博客索引 工具安装、环境配置:Python | 人脸识别系统 — 简介 1、UI代码 UI界面设计:Python | 人脸识别系统 — UI界面设计UI事件处理:Python | 人脸识别系统 — UI事件处理 2、用户端代码 用户端博客索引:…

Jupyter Notebook入门教程

Jupyter Notebook(又称Python Notebook)是一个交互式的笔记本,支持运行超过40种编程语言。本文中我们将介绍Jupyter Notebook的主要特点,了解为什么它能成为人们创造优美的可交互式文档和教育资源的一个强大工具。 首先&#xff…

vue diff算法与虚拟dom知识整理(4) h函数虚拟节点嵌套

那么 先补充上文有一个没强调的点 h函数 当你不需要属性时 其实是可以不传的 例如 我们打开案例 打开 src下的index.js 修改代码如下 import {init,classModule,propsModule,styleModule,eventListenersModule,h,} from "snabbdom";//创建patch函数const patch ini…

CUBLAS 和 CUDNN

文章目录 一、什么是CUBLASCUBLAS实现矩阵乘法CUBLAS中的Leading DimensionCUBLAS LEVEL3函数 : 矩阵矩阵CUBLAS实现矩阵乘法 二、cuDNN使用CuDNN实现卷积神经网络 四、CUBLAS和CUDNN实践 一、什么是CUBLAS cuBLAS是BLAS的一个实现。BLAS是一个经典的线性代数库&am…

解决C语言的缺陷【C++】

文章目录 命名空间展开了命名空间域指定访问命名空间域域作用限定符命名空间定义 C输入&输出缺省参数全缺省参数半缺省参数缺省参数应用 函数重载参数类型不同参数个数不同参数类型顺序不同 引用引用的特性引用在定义时必须初始化一个变量可以有多个引用引用一旦引用一个实…