Mysql用户权限角色访问控制

写在开头

有些权限由于mysql版本不同  root用户本身可能没有某些权限

GRANT SYSTEM_USER ON *.* TO 'root'@'%'; (root用户  mysql8.0.27版本确实没有这个权限 可以一开始加上)  记得是 with grant option 权限给其他用户的时候碰到这个问题  如果按照这个文档测试的话  遇到了再把这个命令丢进去

1.用户管理

Mysql用户可以分为root用户和普通用户.root用户是超级管理员,拥有所有权限,包括创建,删除用户和修改用户密码等管理权限,普通用户只拥有被授予的各种权限.

这样可以保证Mysql数据库安全性

登录Mysql服务器

mysql -h hostname|hostIP -P port -u username -p password -e 'SQL语句'

-x后面的空格可加可不加    -p后面的password不要加空格加了默认为空格是密码一部分

mysql -u root -p xxxx      默认连接的本机3306

创建用户  

官方推荐用CREATE USER语句来创建新用户.Mysql8移出了PASSWORD加密方式,因此不再推荐使用INSERT语句直接操作Mysql中的user表来新增用户.

使用CREATE USER创建用户需要有CREATE USER权限.新增用户没有任何权限.如果用户已存在会报错.

mysql库里有张user表

user表里字段比较多

select * from user\G 可以把字段显示清楚点

select host,user from user;

本来root用户的host默认也是localhost,就是只允许本机访问  

阿里云ECS服务器Linux安装Mysql8-CSDN博客

在安装时候改了  修改语句  update user set Host='%' where User='root';

下面就是Mysql安装完之后  默认的4个用户    主要记住root是超级管理员就行了

创建用户:

CREATE USER '用户名' identified by '密码'

下面host 字段的  % 表示可以任何IP连接

如果用户已经存在  那么这样创建会报错

但是 可以这么干

CREATE USER 'zhangsan'@'localhost' identified by '新密码';

修改用户(一般很少用,为了改个登录名??????????)

UPDATE mysql.user set user='lisi' where user='zhangsan'

此时 我用navicat连接还是可以的    用原先的用户名 zhangsan也是可以登录的

刷新一下

flush privileges;

navicat就不能再连接了  zhangsan也就失效了

删除用户(员工离职了,删除用户)

注意:如果删除用户不成功   用这个 

GRANT SYSTEM_USER ON *.* TO 'root'@'%'; 

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

此操作不需要刷新

推荐用drop user的方式

drop user 'zhangsan';    如果后面没有host字段   默认是host  %  那个用户

如果有多个zhangsan   host是localhost的

drop user 'zhangsan'@'localhost';  如果host是localhost的话 需要指明@'localhost'

也可以一次删除多个

drop user 'xxx','xxx';

另外一种删除方式(不推荐原因:此种方式删除,系统内可能有残留,因为用户信息不光user表,还可能设计其他表)

delete from mysql.user where host='xxxx' and user='xxxxx';

这种方式删除需要刷新一下

flush privileges;

 用户的密码设置和管理

涉及两种场景:

1.设置当前用户密码(适用于root用户修改自己的密码,以及普通用户登录后修改自己的密码)

2.修改其他用户的密码(需要有对应权限)

第一种:设置当前用户密码(适用于root用户修改自己的密码,以及普通用户登录后修改自己的密码)

mysql5.7版本

set password=password('新密码');    mysql8废除password函数

mysql8之后

推荐1.用ALTER USER

修改当前登录用户自己的密码

alter user user() identified by '新密码';

推荐2.使用SET语句来修改当前用户密码

set password='新密码';

在mysql.user表里  authentication_string字段  存的就是用户密码  5.7版本是password字段  改成了authentication_string

2.修改其他用户的密码(需要有对应权限)

root用户不仅可以修改自己密码,也可以修改其他用户密码 其他用户修改其他用户密码  需要对应权限  后面讲

1.使用ALTER语句来修改普通用户权限

ALTER USER '用户名'@'host名字' identidied by '新密码';

例如: alter user 'zhangsan'@'%' identified by '123456';

或者:alter user 'zhangsan'@'localhost' identified by '123456';

2.使用SET命令来修改普通用户的密码

例如:SET PASSWORD FOR 'zhangsan'@'localhost'='123456';

3.使用UPDATE语句修改普通用户密码(不推荐)

update mysql.user set authentication_string=PASSWORD('123456') WHERE user='xxx' and host='xxx';  5.7这样可以    8的话查下   因为不推荐这么干  这里就不查了

密码还可以设置过期时间(自己了解)

注意:如果删除用户不成功   用这个 

GRANT SYSTEM_USER ON *.* TO 'root'@'%'; 

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

权限管理

就是mysql允许你做你权力以内的事情,不可以越界,比如只给你select权限  你就不能update

查看mysql中所有权限   总共62项

show privileges; 

查看当前用户有哪些权限

SHOW GRANTS ;
#
SHOW GRANTS FOR CURRENT_USER ;
#
SHOW GRANTS FOR CURRENT_USER ();


授予权限有两种方式

1.直接授权

2.赋予角色,角色的对应权限给用户(后面讲角色时候讲)

这里就是用第一种方式直接授权

GRANT select,insert,delete,update on testdb.* to 'zhangsan'@'%';

权限可以叠加

赋予用户所有权限(和root用户的区别是  没有给别人授权的权限---->with grant option)

grant all privileges on *.* to 'zhangsan'@'%';

grant all privileges on *.* to 'zhangsan'@'%' with grant option;  这样就和root一样了

收回权限

例如

revoke delete on atguigudb.emps from 'zhangsan'@'%';

这个是收回全部权限

revoke all privileges on *.* from 'zhangsan'@'%';

登录zhangsan查看权限

关于权限表

下面说的mysql库是

角色管理  select host,user from user;角色和用户都是放在一张表中的

Mysql8引入的新功能   Oracle10就有了

角色引入目的就是为了方便管理拥有相同权限的用户

大概的流程是:

1.创建角色

2.给角色赋予权限

3.给用户赋予角色

4.激活角色 

还可以设置强制角色(就是创建了用户默认就是某个角色)

创建角色

使用CREATE ROLE语句

例如  下面两个是有区别的

create role 'manager'@'%';   

create role 'manager'@'localhost';   

给角色赋予权限  如果有两个manager但是host不一样  需要再后面加@'%'或者@'host地址'

grant select on atguigudb.* to 'manager';

GRANT SELECT, INSERT, DELETE, UPDATE ON atguigudb.* TO 'manager';

GRANT ALL PRIVILEGES ON atguigudb.* TO 'manager';

可以一次创建多个角色

create role 'A','B','C';

查看角色权限命令

show grants for 'manager';
show grants for 'manager'@'%';

回收角色权限

revoke insert on atguigudb.* from 'manager';

show grants for 'manager';

删除角色

drop role 'boss';  如果host是localhost的话  需要指明drop role 'boss'@'localhost';

show grants for 'boss';

show grants for 'manager';

角色和用户都是放在user表中  select host,user from user;可以查看

给用户赋予角色(这就好比授权了)

比如创建一个用户授予manager角色

CREATE USER 'xiaoming'@'localhost' identified by '123456'

grant 'manager'@'%' to 'xiaoming'@'localhost';

查看xiaoming是否有manager角色的授权

登录xiaoming

mysql -u xiaoming -p  

密码  123456

show grants;   

没有角色里的权限原因   没有激活角色

select current_role();  查看角色有没有激活

xiaoming账号自己可以激活

set default role 'manager'@'%' to 'xiaoming'@'localhost';

但是激活后查询还是NONE    需要退出先再登录

xiaoming退出后再进入  select current_role();  查看角色有没有激活

show grants;查询权限

激活角色第二种方式

撤销用户的角色(不能自己撤销自己)

登录root

revoke 'manager'@'%' from 'xiaoming'@'localhost';

强制角色 

第一种方式是在配置文件里配置

vim /etc/my.cnf

  

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

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

相关文章

Android13多媒体框架概览

Android13多媒体框架概览 Android 多媒体框架 Android 多媒体框架旨在为 Java 服务提供可靠的接口。它是一个系统,包括多媒体应用程序、框架、OpenCore 引擎、音频/视频/输入的硬件设备,输出设备以及一些核心动态库,比如 libmedia、libmedi…

DC-7靶机渗透详细流程

信息收集: 1.存活扫描: 由于靶机和kali都是nat的网卡,都在一个网段,我们用arp-scan会快一点: arp-scan arp-scan -I eth0 -l └─# arp-scan -I eth0 -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:dd:ee:6…

基于微信小程序的校园二手交易平台

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Springboot+vue的社区智慧养老监护管理平台设计与实现(有报告),Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的社区智慧养老监护管理平台设计与实现(有报告),Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的社区智慧养老监护管理平台设…

【Linux】SystemV IPC

进程间通信 一、SystemV 共享内存1. 共享内存原理2. 系统调用接口(1)创建共享内存(2)形成 key(3)测试接口(4)关联进程(5)取消关联(6)释…

Android:Volley框架使用

3.15 Volley框架使用 Volley框架主要作为网络请求,图片加载工具。当应用数据量小、网络请求频繁,可以使用Volley框架。 框架Github地址:https://github.com/google/volley Volley框架的简单使用,创建项目Pro_VolleyDemo。将Github上下载Volley框架源代码,volley-master.zi…

无心剑汉英双语诗《龙年大吉》

七绝龙年大吉 Great Luck in the Dragon Year 龙腾五岳九州圆 年吼佳音万里传 大漠苍鹰华夏梦 吉人天相铸奇缘 Dragon flies over five peaks watching the divine land so great and round, New Year’s call sends joyous tidal waves far across the world’s bound. The…

SQL注入(SQL Injection)从注入到拖库 —— 简单的手工注入实战指南精讲

基本SQL注入步骤: 识别目标:确定目标网站或应用程序存在潜在的SQL注入漏洞。收集信息:通过查看页面源代码、URL参数和可能的错误信息等,搜集与注入有关的信息。判断注入点:确定可以注入的位置,比如输入框、…

红队渗透靶机:TIKI: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb 目录探测 1、dirsearch 2、gobuster WEB web信息收集 searchsploit cms信息收集 ssh登录 提权 信息收集 1、arp ┌──(root㉿ru)-[~/kali] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:2…

Blender_查看版本

Blender_查看版本 烦人的烦恼,没找见哪儿可以查看版本? 算是个隐蔽的角落!

华清作业day56

SQLite特性: 零配置一无需安装和管理配置;储存在单一磁盘文件中的一个完整的数据库;数据库文件可以在不同字节顺序的机器间自由共享;支持数据库大小至2TB;足够小,全部源码大致3万行c代码,250KB…

09 AB 10串口通信发送原理

通用异步收发传输器( Universal Asynchronous Receiver/Transmitter, UART)是一种异步收发传输器,其在数据发送时将并行数据转换成串行数据来传输, 在数据接收时将接收到的串行数据转换成并行数据, 可以实现…

休斯顿NASA太空机器人进入最后测试阶段,或可模拟人类执行外星任务!

美国宇航局开发研制的太空智能机器人目前正在德州休斯顿的约翰逊航天中心接受最后的运行测试,距离太空智能化时代又要更进一步了! NASA表示,日前在德州休斯顿附近的约翰逊航天中心进行测试的机器人名为Valkyrie,是以北欧神话中的一…

机器学习9-随机森林

随机森林(Random Forest)是一种集成学习方法,用于改善单一决策树的性能,通过在数据集上构建多个决策树并组合它们的预测结果。它属于一种被称为“集成学习”或“集成学习器”的机器学习范畴。 以下是随机森林的主要特点和原理&…

《动手学深度学习(PyTorch版)》笔记7.6

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…

排序算法---冒泡排序

原创不易,转载请注明出处。欢迎点赞收藏~ 冒泡排序是一种简单的排序算法,其原理是重复地比较相邻的两个元素,并将顺序不正确的元素进行交换,使得每次遍历都能将一个最大(或最小)的元素放到末尾。通过多次遍…

疑似针对安全研究人员的窃密与勒索

前言 笔者在某国外开源样本沙箱平台闲逛的时候,发现了一个有趣的样本,该样本伪装成安全研究人员经常使用的某个渗透测试工具的破解版压缩包,对安全研究人员进行窃密与勒索双重攻击,这种双重攻击的方式也是勒索病毒黑客组织常用的…

RibbonOpenFeign源码(待完善)

Ribbon流程图 OpenFeign流程图

mac协议远程管理软件:Termius for Mac 8.4.0激活版

Termius是一款远程访问和管理工具,旨在帮助用户轻松地远程连接到各种服务器和设备。它适用于多种操作系统,包括Windows、macOS、Linux和移动设备。 该软件提供了一个直观的界面,使用户可以通过SSH、Telnet和Mosh等协议连接到远程设备。它还支…

【SpringBoot】JWT令牌

📝个人主页:五敷有你 🔥系列专栏:SpringBoot ⛺️稳重求进,晒太阳 什么是JWT JWT简称JSON Web Token,也就是通过JSON形式作为Web应用的令牌,用于各方面之间安全的将信息作为JSON对象传输…