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

news2024/12/24 8:29:00

一、登录用户的管理

1.1 查看用户密码的信息 

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

use mysql ;
show tables;
desc user;

查看密码信息的命令:

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

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('abc123') where user='root';
 mysql> flush privileges;   #刷新数据库
 ​
 mysql> quit                #退出
 第三步:登录测试新密码 
mysql -u root -pabc123

第四步:撤销添加的免密码认证设置,重启数据库服务  
#删除配置文件中的配置,之后重启服务。
 注意:最后再把/etc/my.conf 配置文件里的skip-grant-tables 删除,并重启mysql服务。
 vim /etc/my.cnf
systemctl restart mysqld.service 

二、管理登录用户的权限 

2.1 常见的用户权限 

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

 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

注意:远程登录只可登录授权远程登录的用户,像本地主机这样的本机用户是无法远程登录的

总结

用户管理操作:

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; #刷新数据库

 用户授权操作 :

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/1333474.html

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

相关文章

Python入门学习篇(七)——列表切片字符串切片

1 列表切片 1.1 语法结构 列表的变量名[start:end:step] """ start表示截取的开始位置(下标从0 开始),不填是默认是0 end截取的最后一个元素位置1, 不填是截取到最后一个元素 step 每隔几个(step-1)去获取值,默认没填时,step值为1 因而 取值范围为…

ROS2 学习09--ros 中的通信接口的定义以及如何创建自定义msg、srv和action文件

在ROS系统中,无论话题还是服务,或者我们后续将要学习的动作,都会用到一个重要的概念——通信接口。 通信并不是一个人自言自语,而是两个甚至更多个人,你来我往的交流,交流的内容是什么呢?为了让…

PCIe surprise down异常与DPC功能分析-part1

在PCIe系统中,多个设备通过PCIe链路连接在一起,形成一个复杂的互连网络。这些设备可能包括CPU、GPU、网卡、存储控制器等。由于PCIe是一种高速、低延迟的总线标准,任何设备故障或错误都可能迅速传播到整个系统,导致数据损坏、系统…

基于Java (spring-boot)的仓库管理系统

一、项目介绍 本系统的使用者一共有系统管理员、仓库管理员和普通用户这3种角色: 1.系统管理员:通过登录系统后,可以进行管理员和用户信息的管理、仓库和物品分类的管理,以及操作日志的查询,具有全面的系统管理权限。 2.仓库管理…

labelme标注的json文件数据转成coco数据集格式(可处理目标框和实例分割)

这里主要是搬运一下能找到的 labelme标注的json文件数据转成coco数据集格式(可处理目标框和实例分割)的代码,以供需要时参考和提供相关帮助。 1、官方labelme实现 如下是labelme官方网址,提供了源代码,以及相关使用方…

【数据保护】数据匿名的自定义NLP方法

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…

Android画布Canvas裁剪clipRect,Kotlin

Android画布Canvas裁剪clipRect,Kotlin private fun mydraw() {val originBmp BitmapFactory.decodeResource(resources, R.mipmap.pic).copy(Bitmap.Config.ARGB_8888, true)val newBmp Bitmap.createBitmap(originBmp.width, originBmp.height, Bitmap.Config.A…

【C++11/17】std::map高效插入

我们在使用stl的映射容器std::map时,经常需要向容器中插入数据。由于map的元素key值是唯一的,我们经常遇到这样的场景: 向map中插入元素时,指定的key已经存在则直接更新;指定的key不存在,然后才做插入操作…

四色问题(图论)python

四色问题是一种著名的图论问题,它要求在给定的地图上给每个区域着一种颜色,使得相邻的区域颜色不同,而只使用四种颜色。这个问题可以通过图的着色来解决,其中图的节点表示区域,边表示相邻的关系。 在 Python 中&#…

服装店管理系统打造门店拓客、促活、存留营销方案

打造门店拓客、促活和存留营销方案对于服装店的管理系统来说是非常重要的。以下是一些可行的方案: 1. 会员管理系统:引入会员管理功能,建立会员档案,跟踪会员消费记录和偏好。通过会员系统,可以实施积分制度、生日礼品…

Kioptrix-2

环境搭建 这个靶场环境稍微有点麻烦,首次打开的时候,需要将靶机从VM中移除(注意是 从VM里面移除),然后利用nodpad等工具打开vmx文件,然后两步: 所有以“ethernet0”开头的条目并保存更改。然后…

DBAPI如何进行API请求参数校验

DBAPI如何进行API请求参数校验 实操 案例1- 校验参数字符串长度不能大于4 在参数校验项目点击新增参数校验规则 在校验脚本填写JavaScript脚本内容&#xff0c;就写js代码name.length < 5&#xff0c;然后失败提示信息填上相应的内容&#xff0c;当这个参数校验规则执行不…

GPT每预测一个token就要调用一次模型

问题&#xff1a;下图调用了多少次模型&#xff1f; 不久以前我以为是调用一次 通过看代码是输出多少个token就调用多少次&#xff0c;如图所示&#xff1a; 我理解为分类模型 预测下一个token可以理解为分类模型&#xff0c;类别是vocab的所有token&#xff0c;每一次调用都…

【K8S in Action】服务:让客户端发现pod 并与之通信(2)

一 通过Ingress暴露服务 Ingress (名词&#xff09; 一一进入或进入的行为&#xff1b;进入的权利&#xff1b;进入的手段或地点&#xff1b;入口。一个重要的原因是每个 LoadBalancer 服务都需要自己的负载均衡器&#xff0c; 以及 独有的公有 IP 地址&#xff0c; 而 Ingres…

网络传输介质简介

通信网络除了包含通信设备本身之外&#xff0c;还包含连接这些设备的传输介质&#xff0c;如同轴电缆、双绞线和光纤等。不同的传输介质具有不同的特性&#xff0c;这些特性直接影响到通信的诸多方面&#xff0c;如线路编码方式、传输速度和传输距离等。 简单网络 两个终端&am…

2005年AMC8数学竞赛中英文真题典型考题、考点分析和答案解析

今天距离2024年的AMC8美国数学竞赛举办已不足一个月了&#xff0c;赶紧利用周末的时间刷刷真题&#xff0c;查漏补缺吧&#xff01;如果您有任何关于AMC8比赛的任何问题都可以问我&#xff0c;关于题目的解析也可以交流。 今天我们来看看2005年AMC8竞赛的五道典型考题。欢迎您查…

深入理解依赖反转原则(DIP)

依赖反转原则是一个比较重要的架构原则&#xff0c;从定义上看是要依赖于抽象&#xff0c;不要依赖于细节&#xff0c; 这个听起来很简单&#xff0c;好像加个接口就完事了&#xff0c;大家的service都是一个接口配一个实现类&#xff0c;是不是依赖倒置呢&#xff1f;很显然不…

如何给打印机墨盒加墨

今天打印东西突然遇到问题了&#xff0c;显示墨盒黑色没墨了&#xff0c;网上一搜&#xff0c;整套的墨盒大几十&#xff0c;随手换了一个关键词 墨盒墨水 这下不到十块钱解决&#xff0c;正好锻炼下自己的动手能力&#xff08;其实就是穷嘛。。。&#xff09; 接下来就分享下动…

鸿蒙开发语言介绍--ArkTS

1.编程语言介绍 ArkTS是HarmonyOS主力应用开发语言。它在TypeScript (简称TS)的基础上&#xff0c;匹配ArkUI框架&#xff0c;扩展了声明式UI、状态管理等相应的能力&#xff0c;让开发者以更简洁、更自然的方式开发跨端应用。 2.TypeScript简介 自行补充TypeScript知识吧。h…

MATLAB ga函数的使用方法

一、ga句法结构 x ga(fitnessfcn,nvars) x ga(fitnessfcn,nvars,A,b) x ga(fitnessfcn,nvars,A,b,Aeq,beq) x ga(fitnessfcn,nvars,A,b,Aeq,beg,IB,UB) x ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon) x ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options) x …