锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. 【MySQL】用户管理

【MySQL】用户管理

0
  • 软件开发
  • 发布于 2024-07-27
  • 0 次阅读
黄健
黄健

原文链接:https://blog.csdn.net/fight_p/article/details/139508138

1.用户信息

MySQL有自己的用户管理,用户管理也是表结构形式进行管理的。 MySQL对用户做管理,其实是一定要记录下来那些用户是允许使用MySQL的,所以MySQLl的信息也是在MySQLl内特定的表中被保存的。这张表就是在系统数据库mysql的user表中。

可以简单看一下,

User是用户名,

Host代表允许这个用户从那台机器上登录mysql ,localhost代表只允许这个root从本地直接登录mysql。

后面一大堆都是权限信息,后面说。

authentication_string是当前用户的密码

password_expried是密码是否过期

password_last_changed是密码更改时间

这里我们主要查看下面三列

select user,host,authentication_string from user;

mysql和linux一样可以允许创建多个用户,这些用户都是普通用户,你可以给他们开账号,所谓在mysql内部给用户开账号,就是把用户的用户名,允许从哪里登录,以及用户的密码信息放在mysql中的user表里。然后就有了这个用户了。

如果我们现在想在mysql新建一个用户,有一个特点简单粗暴的方式,也不用后面学的专门的创建用户的sql语句。可以用inset 向这个user里面插入也是可以的。但是这太麻烦了。其实未来学的创建用户,删除用户,修改用户其实说到底就是在user表里做增加删除修改!

2.创建用户

create user '用户名'@'登陆主机/ip' identified by '密码';

用户名 ,自己随意设置
登陆主机/ip,不能少,如果是本机登录是 localhost/127.0.0.1,远程登录等会说
然后后面要设置密码,后面密码会被hash加密保存到user表中。

这里新建用户的行为其实就是向mysql的user表里插入一条信息

然后就可以进行本地登录了,不过最好在登录之前进行一下内存的刷新。刚才不是创建用户,这个用户信息是在内存当中的。我们对这个信息进行一下刷新,保证它是有效的就可以了。

flush privileges;

现在普通用户就可以登录了,输入的是刚才设置的密码。

注意上面新建的用户是不能够进行远程登录mysql的。那如何创建一个可以进行远程登录的用户呢?非常简单。

远程登录可以把允许从那台主机登录写成%,因为我们目前用的都是windows下的IP地址,目前我们也就一台云服务器,公网ip设上也没有用。那有人说我把允许从那台主机上登录换成windows ip地址行不行呢?不行!windows下的ip地址是私有IP,在经过公网转发的时候会被NAT路由器替换。所以在这里设计具体IP地址没有任何意义。所以直接用 %,代表是允许wdl这个用户可以从任意主机处登录。 注意在数据库里,一般禁止直接带%。如果非得让他登录就必须明确限定出来这个用户允许从那台主机登录。

create user 'wdl'@'%' identified by '密码';

注意这里在mysql命令行上下翻的时候,涉及到密码的都不会被mysqk记录下来。

注意MySQL的端口号一定不能出现在公网上,MySQL的端口号以及整体服务是要在内网上被进行相关访问的。

3.删除用户

drop user '用户名'@'主机名'

注意直接给个用户名,不能删除,它默认是%,表示所有地方可以登陆的用户。必须要在删的时候清楚告诉mysql你删的这个人它是在哪台机器上的。相当于USER和HOST两列合起来才是一个用户,它必须得是完整的!

drop user wdl@localhost;

4.修改用户密码

自己改自己密码

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

root用户修改指定用户的密码

set password for '用户名'@'主机名'=password('新的密码');

甚至还可以用update更用户密码,所以不要被创建用户这些负责语句唬住了,它们的核心工作就是对这个user做增删查改。

5.数据库的权限

当我们在MySQL中把一个用户创建好了,不是就所有工作做好了,而是说把用户创建好了 ,用户还要有他对应的权限也要处理的。

MySQL数据库提供的权限列表:

当前新建的用户只能看到这一个数据库。

下面给新建用户授权,对新用户做相关限制。

5.1给用户授权

语法:

grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码']

库就是那个数据库,对象名就是那个表,说白了你这个权限是对哪一个数据库下的那一张表设置。

说明:

  • 权限列表,多个权限用逗号分开

grant select on …

grant select, delete, create on …

grant all [privileges] on … – 表示赋予该用户在该对象上的所有权限

. : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)

库.* : 表示某个数据库中的所有数据对象(表,视图,存储过程等)

identified by可选。 如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户

首先root建立一个数据库,因为目前还没有给新用户授权所以当前看不到这个数据库

root创建一张表插入两条记录,然后新用户使用这张表的时候,报错的是权限拒绝,虽然从上帝视角看到是有这张表的,但是不让进去。一是不知道有这个数据库,二他也没有权限进去。

下面就给这个新用户这个权限

给了新用户权限后就可以看了,查看给用户的权限都有哪些

show grants for 'wdl'@'%';

可以看到给当前用户的权限是所有的权限

所有新用户也是可以对表进行插入的

那我现在想把它插入权限去掉不让他插入,就可以去掉他对应的权限。

5.2回收权限

revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';

去掉用户的插入权限。去掉之后发现以前就一个all,怎么回收一个权限这里就变这么长了。但你会发现这里的权限少了insert。

我们发现当前用户是可以删除的,但是就是不能插入了!插入没有权限了。

同样也可以把删除权限去掉,用户也不可以删了

现在我们可以把用户所有权限都取消。发现用户不能查看这个user表了,甚至这个数据库都看不到了

这就是给用户赋权,给用户赋上对应的权限,用户就可以看到数据库以及数据库的表,如果取消了对应的权限,那对数据库表某些操作就不能做了,如果取消所有权限,那数据库以及表都看不到了。

给用户什么权限就只能做对应的对应的操作。

标签: #软件开发 1171 #JAVA 991 #新手必读 21
相关文章

万字:支付“核心系统”详解 2024-11-02 15:33

专栏作者:隐墨星辰 \| 主编:陈天宇宙 这篇文章也尝试化繁为简,探寻支付系统的本质,讲清楚在线支付系统最核心的一些概念和设计理念。 虽然支付行业已经过了风头最劲的时光,但跨境支付仍然在蓬勃发展,每年依然有很多新人进入这个行业,这篇文章尝试为这些刚入行的新人提供一点帮助。 文章只介绍一些支付行业十几

资深支付架构师视角:实战从问题定义到代码落地的完整套路 2024-11-02 15:33

前言 今天从一个实际案例入手,介绍站在架构师的角度,如何识别并定义问题,提炼需求,技术方案选型,再到详细设计,最后利用AI的能力协助写出核心的代码,验证与调优。 解决问题存在一定的模式,也可以称之为框架,总结出自己的思考和解题框架,以后再碰到同类型的问题就可以如庖丁解牛一样容易。 很多年前,我写代码

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

设计模式第16讲——迭代器模式(Iterator) 2024-10-08 11:24

一、什么是迭代器模式 迭代器模式是一种行为型设计模式,它提供了一种统一的方式来访问集合对象中的元素,而不是暴露集合内部的表示方式。简单地说,就是将遍历集合的责任封装到一个单独的对象中,我们可以按照特定的方式访问集合中的元素。 二、角色组成 抽象迭代器(Iterator):定义了遍历聚合对象所需的方法

vue2路由和vue3路由区别及原理 2024-10-08 11:24

一、Vue2 与 Vue3 路由的区别 1. 创建路由实例方式的不同 Vue 2 中,通过 Vue.use() 注册路由插件,并通过 new VueRouter() 来创建路由实例。 import Vue from 'vue';import VueRouter from 'vue-router';i

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.