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

一、登录用户的管理

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.cnfskip-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.hqwc.cn/news/296758.html

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

相关文章

java中线程相关的面试题

什么是线程安全,造成线程安全的本质是什么? 什么是线程安全呢? 咱们初步去理解话记住一句话就行:如果一个对象可以安全地被多个线程同时使用,那它就是线程安全的。 为什么并发编程会导致线程不安全? 可见…

YOLOv8改进 | 主干篇 | 利用SENetV1改进网络结构 (ILSVRC冠军得主)

一、本文介绍 本文给大家带来的改进机制是SENet(Squeeze-and-Excitation Networks)其是一种通过调整卷积网络中的通道关系来提升性能的网络结构。SENet并不是一个独立的网络模型,而是一个可以和现有的任何一个模型相结合的模块(可以看作是一…

每日一题——LeetCode859

方法一 个人方法: 首先s和goal要是长度不一样或者就只有一个字符这两种情况可以直接排除剩下的情况s和goal的长度都是一样的,s的长度为2也是特殊情况,只有s的第一位等于goal的第二位,s的第二位等于goal的第一位才能满足剩下的我们…

全网功能最全、界面最美的年会抽奖源码合集

文章目录 1️⃣ 年会抽奖平台源码1.1 html5实现最震撼公司年会抽奖1.2 html实现好看的年会抽奖1.3 年会活动html酷炫抽奖功能1.4 星空版的九宫格酷炫抽奖HTML源码1.5 html实现名字滚动年会抽奖(附源码)1.6 html实现酷炫的公司年会抽奖(附源码)1.7 html5实现最高端的公司年会抽奖…

AntDesignBlazor示例——Modal表单

本示例是AntDesign Blazor的入门示例,在学习的同时分享出来,以供新手参考。 示例代码仓库:https://gitee.com/known/BlazorDemo 1. 学习目标 创建Modal表单编辑数据创建Table操作列 2. 创建Modal表单 1)新增按钮和Modal组件 …

掌握iText:轻松实现固定pdf模板的动态数据填充

推荐语 如果你在工作中需要处理大量的PDF表单,那么使用iText5实现固定PDF模板的动态数据填充,将是一种非常有效的方法。这篇技术文章详细介绍了如何使用iText5库来读取已有的PDF模板,并动态地填充表单数据,生成最终的表单文件。通…

【数据结构入门精讲 | 第十七篇】一文讲清图及各类图算法

在上一篇中我们进行了的并查集相关练习,在这一篇中我们将学习图的知识点。 目录 概念深度优先DFS伪代码 广度优先BFS伪代码 最短路径算法(Dijkstra)伪代码 Floyd算法拓扑排序逆拓扑排序 概念 下面介绍几种在对图操作时常用的算法。 深度优先D…

记一次 Nginx 调参的踩坑经历

最近在基于SSE(Server Sent Events)做服务端单向推送服务,本地开发时一切顺利,但是在部署到预发环境时就碰到1个很诡异的问题,这里需要简单介绍下我们的整体架构: 整体架构 可以看到所有的请求都会先到统一…

STM32移植LVGL图形库

1、问题1:中文字符keil编译错误 解决方法:在KEIL中Options for Target Flash -> C/C -> Misc Controls添加“--localeenglish”。 问题2:LVGL中显示中文字符 使用 LVGL 官方的在线字体转换工具: Online font converter -…

阿里云Code的代码仓库忘了升级导致现在找不到了怎么办?

阿里云Code的代码仓库忘了升级了,找不到了怎么办?如何找回丢失的阿里云代码? 1.1 问题背景1.2 修复方案 1.1 问题背景 众所周知,在之前,阿里云代码仓库托管使用的是 code.aliyun.com,后来迁移到了 codeup.aliyun.com &#xff0…

解锁JDK 12的奇妙之旅:新特性详解

欢迎来到我的博客,代码的世界里,每一行都是一个故事 解锁JDK 12的奇妙之旅:新特性详解 前言switch表达式拓展NumberFormat对复杂数字的格式化字符串支持transform、indent操作新增方法Files.mismatch(Path, Path)Teeing Collector支持unicode…

map容器的基本使用

文章目录 mapmap模板参数默认构造迭代器[ ]{ }inserterasefindlower_bound && upper_boundcountequal_range map和set容器,multimap和multiset是树形结构的关联式容器,这四种容器底层原理都是红黑树,容器中的元素是一个有序序列。 ma…