您现在的位置是:首页 > 正文

mysql用户管理

2024-02-29 17:02:45阅读 2

mysql是如何处理权限的

 1.流程图


2.流程图解释:

客户端发送操作数据库的请求

分析这个操作命令需要的权限

判断用户在mysql库的user表中记录的权限(比如user表记录允许连接到服务器的账号信息以及全局的权限控制)

判断用户在mysql库的db表中记录的权限(记录用户对哪些库的操作权限,是数据库范围)

判断用户在mysql库的host表中记录的权限(判断来源于哪些主机的用户对数据库的操作权限,主机范围,配合db表可以做更加细致的控制)

tables_prive用来设置用户对数据库的表的权限

columns_priv用来设置用户对数据库的表中的列的权限(需要借助视图来实现)

...................

客户端数据库操作请求结束

mysql库中的user表数据


user表结构



db表的结构




账户管理(grant和revoke)

我们完全可以通过sql语句操作以上的表来达到账户管理的目的,比如让来源于哪个主机的哪些用户操作哪些库中的哪些表中的哪些列,但是这样一来,无疑给我们增加了难度,因此我们可以通过下面的简单命令来达到目的。

1.创建用户(不常用)

create user 'username' @ 'host'  [identified by  'password'];

这个新用户创建后,一点权限都没有。只是一个空白用户,如果想让这个用户能干些事情,就需要授权语句了。

这个命令不常用。


2.创建用户(推荐)

(1)..grant语句

grant语句有两个作用,当用户已存在的时候,就对用户授权

当用户不存在的时候,则先创建用户,再授权。

因此grant 既可以创建用户又可以授权。


例如:

grant all on db.* to 'zhangpeng'@'192.168..1.80' identified  by '123';


(2).刷新授权表

flush privileges;//以后使用grant

语句进行授权的时候,要及时的跟上flush语句。让授予的权限立即生效。

(3) 删除用户   (用户一定是与主机地址一起来标识一个用户)

drop user   username'@host;

(4) 查看权限

show grants for username@host;

(5) 收回权限

revoke  all  on db.*  from  zhangpeng@192.168.1.80;



3.修改密码

(1).set password = password('123');//password函数起到加密的作用。 设置自己的密码

(2).set password for  zhangpeng@192.168.1.80 = password('123'); //可为其他人修改密码

(3).update mysql.user set password = password('123')  where user = 'zhangpeng' and host = 'host';

(4).mysqladmin -u username  -p旧password password "123";


忘记root密码怎么办

关闭数据库

使用mysqld_safe --skip-grant-tables &   启动数据库 (忽略授权表的方式启动,也就是说mysql启动的时候,不加载授权表信息)

使用空密码进入数据库 直接输入mysql ,回车即可

使用update语句修改root密码   use mysql  -->update user set pssword = password('123') where user = 'root';

关闭数据库并重新以正常的方式启动数据库  kill 杀掉mysql进程 再重启


补充: 查看进程  ps -ef | grep mysql















网站文章

  • C# 使用HtmlAgilityPack抓取网页信息

    C# 使用HtmlAgilityPack抓取网页信息

    前几天看到一篇博文:C# 爬虫 抓取小说 博主使用的是正则表达式获取小说的名字、目录以及内容。 下面使用HtmlAgilityPack来改写原博主的代码 在使用HtmlAgilityPack之前,可以先熟悉一下XPath:点我 代码如下: 1 using System; 2 using System.IO; 3 using System.Text; 4 usi...

    2024-02-29 17:02:33
  • Java程序员常用的Eclipse键盘快捷键,建议收藏

    Java程序员常用的Eclipse键盘快捷键,建议收藏

    Java程序员常用的Eclipse键盘快捷键

    2024-02-29 17:02:04
  • android app 适配,Android app 适配

    android app 适配,Android app 适配

    有过android手机或者盒子(TV)开发经历的工程师都知道,app的适配是很头疼的工作。最近也在做相关工作,为此把自己学习和实战的经验分享在这儿,希望对有需要的同学有所帮助。首先分享几篇适配相关的a...

    2024-02-29 17:01:57
  • 防止板结的方法

    板结,如同血管中的淤积,会给项目组正常运转造成损坏,甚至引起“板结”成员与上级恶意对抗。消除“板结”是项目经理要仔细思考并认真执行的工作。防止板结的一些方法建议:1、A/B角,大型项目的项目经理一定要...

    2024-02-29 17:01:50
  • Java架构师—Nginx的模块化设计

    Java架构师—Nginx的模块化设计

    Nginx的进程模型; Nginx的安装目录说明。

    2024-02-29 17:01:22
  • (24)Linux基础-系统交换分区SWAP

    一. 概念 swap分区是Linux系统下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是swap分区)虚拟成内存来使用,防止内存溢出,以保证系统稳定运行。 swap分区大小一般为物...

    2024-02-29 17:01:15
  • Python小游戏:五子棋

    Python小游戏:五子棋

    今天主要介绍一下python实现五子棋小游戏,使用pygame模块编写一个五子棋游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

    2024-02-29 17:01:07
  • PyTorch深度学习——反向传播

    PyTorch深度学习——反向传播

    pytorch实现反向传播代码相关解析

    2024-02-29 17:00:39
  • webpack4.0 - 核心概念之loader,plugins和babel

    什么是loader? webpack只能打包js模块,其他模块的打包需要借助loader。loader可以处理各种各样文件类型。 file-loader:将文件处理后移动到打包文件中 url-loader:可以实现file-loader的功能,而且可以限制文件限制,在文件比较小的情况下,可以返回一个DataURL,也可以打包字体。file-loader和url-loader,优先使用url-...

    2024-02-29 17:00:30
  • python将文件夹中所有子文件夹中的图片统一保存

    【代码】python将文件夹中所有子文件夹中的图片统一保存。

    2024-02-29 17:00:23