MySQL用户管理和权限管理

2023-11-05

MySQL用户管理和权限管理

在项目中,一个数据库有很多人需要使用,不能所有的人都使用相同的权限,如果人比较多,一人一个用户也很难管理。一般来说,会分超级管理员权限,管理员权限,读写权限,只读权限等,这样方便管理。当然,具体怎么管理权限根据实际情况来确定。

无论如何,都需要创建多个用户来管理权限。

root 是数据库的超级管理员用户,对于普通开发人员来说,权限太大了,如果不小心做了一些不可逆的操作,后果是非常严重的,并且还不容易查出责任人。

所以 root 用户不会让开发人员使用,一般会由 DBA 或运维人员统一管理,如果没有 DBA,统一由超级管理员 root 来分配。

1. 查看所有用户

MySQL 中所有的用户及权限信息都存储在默认数据库 mysql 的 user 表中。

进入 mysql 数据库,通过 desc user; 可以查看 user 表的结构。

use mysql;
desc user;

可以看到 user 中有40多个字段,字段非常多,只要关注主要字段就行了。

其中的主要字段有:

host: 允许访问的主机地址,localhost 为本机,% 为任何主机。
user: 用户名。
authentication_string: 加密后的密码值。

使用 select * from user; 查看 user 表中当前有哪些用户。

select host,user,authentication_string from user;

在安装 MySQL 后,有三个默认的用户。

2. 创建用户

使用 create user '用户名'@'访问主机' identified by '密码'; 创建用户。

create user 'admin'@'localhost' identified by 'Mysql!123';

创建用户后,查看用户,多了刚才创建的 admin,创建成功。

3. 查看用户权限

使用 show grants for '用户名'@'访问主机'; 查看用户的权限。

show grants for 'admin'@'localhost';

在创建用户的时候,如果没有指定权限,默认会赋予 USAGE 权限,这个权限很小,几乎为0,只有连接数据库和查询information_schema 数据库的权限。虽然 *.* 表示所有数据库的所有表,但因为 USAGE 的限制,不能操作所有数据库。

退出 root 用户,登录到 admin 用户,只能看到 information_schema 数据库。

4. 给用户授权

创建 admin 用户,目的是创建一个管理员,所以要给 admin 授权。退出 admin ,重新登录 root 。

在授权时,常用的权限有 CREATE、ALTER、DROP、INSERT、UPDATE、DELETE、SELECT,ALL PRIVILEGES 表示所有权限。

通过 数据库.数据表 指定对哪个数据库的哪个表授权,*.* 表示所有数据库中的所有表。

通过 '用户名'@'访问主机' 来表示用户可以从哪些主机登录, ‘%’ 表示可以从任何主机登录。

使用 grant 权限 on 数据库.数据表 to '用户名'@'访问主机' identified by '密码'; 来给数据库用户授权。

grant all privileges on *.* to 'admin'@'localhost' identified by 'Mysql!123';

给 admin 用户授权后,权限从 USAGE 变成了 ALL PRIVILEGES ,表示 admin 拥有了所有权限。

如果授权没有生效,记得刷新一下权限,使权限生效。

flush privileges;

再重新登陆到 admin 用户上,可以操作所有数据库了。

给用户授权的时候,必须要指定 '用户名'@'访问主机' 来指定用户。如果 '访问主机' 不相同,不是给用户授权,而是创建一个同名同密码的用户,这个用户与原用户可以登陆的主机不相同,权限不同。

grant all privileges on *.* to 'admin'@'%' identified by 'Mysql!123';

执行上面的语句后,user 表中有两个 admin 用户,用户名和密码都一样,但可以登陆的主机不一样。第一次创建的 admin 访问主机是 localhost,执行上面的语句时指定的访问主机是 % ,访问主机不一样,MySQL 会创建两个用户。虽然用户名密码相同,但这是两个不同的用户,两个用户的权限不一样。给两个用户指定不同的权限,在两个用户都有权限的主机登录时,局部用户的权限会覆盖全局用户的权限,当在 localhost 登录时,'admin'@'localhost' 的权限会覆盖 'admin'@'%' 的权限。

对于可以从任何主机登录的用户,在查看用户权限时,可以使用 show grants for 用户名; 来查看权限,指定主机的用户在查看权限时,要跟上访问主机才能查看权限。

5. 创建用户并授权

使用 grant 权限 on 数据库.数据表 to '用户名'@'访问主机' identified by '密码'; 来创建一个用户并指定权限,与上面授权使用的语句相同。

grant create,select on *.* to 'creater'@'%' identified by 'Mysql!123';

创建了一个有读写权限的用户 creater,这个用户拥有所有数据库的 SELECT 和 CREATE 权限,可以从任何主机登录数据库。

6. 修改用户的权限

使用 grant 权限 on 数据库.数据表 to '用户名'@'访问主机' identified by '密码'; 修改用户的权限,其实前面的授权就是修改权限。

grant all privileges on *.* to 'creater'@'%' identified by 'Mysql!123';

修改用户的权限后,creater 的权限从 SELECT 和 CREATE 权限变成了 ALL PRIVILEGES。

7. 删除用户

使用 drop user '用户名'@'访问主机'; 来删除用户。

drop user 'admin'@'localhost';

执行删除操作后,user 表中不再有该用户。

8. 修改用户名和访问主机

使用 rename user '用户名'@'访问主机' to '新用户名'@'新访问主机'; 来修改用户名和用户的访问主机。

rename user 'creater'@'%' to 'create'@'localhost';

修改之后,creater 用户改名 create ,访问主机从 % 变成了 localhost 。

9. 修改用户密码  

使用 set password for '用户名'@'访问主机' = password('新密码'); 修改用户的密码。

set password for 'create'@'localhost'=password('Mysql@123');

上面创建的 admin 用户和 create 用户密码相同,现在给 create 修改密码,使密码不一样。

以上就是对数据库用户和权限管理的基本操作。这些操作都是对 mysql 数据库中的 user 表进行操作,所以上面的大部分操作都还有另外一种方法,就是通过对 mysql.user 表的增删改查语句来实现。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL用户管理和权限管理 的相关文章

  • 使用MongoDB命令连接远程服务器的MongoDB数据库

    使用MongoDB命令连接远程服务器的MongoDB数据库 MongoDB连接远程服务器的命令格式如下 mongo 远程主机ip或DNS MongoDB端口号 数据库名 u user p password MongoDB连接远程服务器的命令
  • LeetCode 每日一题 2023/9/11-2023/9/17

    记录了初步解题思路 以及本地实现代码 并不一定为最优 也希望大家能一起探讨 一起进步 目录 9 11 630 课程表 III 9 12 1462 课程表 IV 9 13 2596 检查骑士巡视方案 9 14 1222 可以攻击国王的皇后 9
  • AcWing167. 木棒(DFS+剪枝)

    输入样例 9 5 2 1 5 2 1 5 2 1 4 1 2 3 4 0 输出样例 6 5 解析 DFS 搜索顺序 根据木棒的长度从小到大枚举每根木棒 对于每根木棒 枚举可以由哪些木棍拼成 如果所有的木棍拼成了长度相等的多个木棒 说明找到了
  • PGSQL(学习与操作)

    PGSQL操作手册 1 Navicat连接数据库 192 168 31 0 密码 123456 port 5432 2 PGSQL数据库基础学习 1 创建数据库 CREATE DATABASE runoobdb 创建数据库 数据库名为run
  • ubuntu 18 OpenCV 4.5.3 cuda 源码编译

    目录 opencv453 build build sh opencv 4 5 3 opencv contrib 4 5 3 编译命令 创建 build sh 文件 pwd cmake D CMAKE BUILD TYPE RELEASE D
  • 基于蚁群算法求解运钞车路径规划问题(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 Matlab代码实现 4 参考文献 1 概述 车辆路径规划问题 Vehicle Rout
  • 【factoryio】虚拟工厂 的安装和使用

    文章目录 目录 文章目录 前言 一 factoryio是什么 二 factoryio的安装和使用 1 安装 2 激活 3 使用 三 factoryio和西门子PLC进行仿真连接 1 在博途软件中打开工程模板 2 进行仿真连接 3 点动实例
  • 机器学习笔记4-Tensorflow线性模型示例及TensorBoard的使用

    前言 在上一篇中 我简单介绍了一下Tensorflow以及在本机及阿里云的PAI平台上跑通第一个示例的步骤 在本篇中我将稍微讲解一下几个基本概念以及Tensorflow的基础语法 本文代码都是基于API版本r1 4 本文中本地开发环境为Py
  • ubuntu 安装软件idea

    sudo dpkg i sogoupinyin 2 0 0 0072 amd64 deb 把Idea放到你想要方的位置 sudo cp ideaIU 2018 1 6 tar gz usr local 解压 sudo tar zxvf id
  • python自动播放网页视频_[JavaScript] audio在浏览器中自动播放

    audio 在浏览器中自动播放 autoplay 属性 autoplay 属性规定一旦音频就绪马上开始播放 如果设置了该属性 音频将自动播放 使用 autoplay 属性进行播放 使用autoplay属性 var src award wav
  • CVE-2005-1794

    Microsoft Windows远程桌面协议中间人攻击漏洞 CVE 2005 1794 漏洞解决方案 Windows server2003 1 启动 终端服务配置 2 选择 连接 看到 RDP Tcp 在其上右键 选择 属性 3 常规 选
  • 期货开户保持一颗平常心

    在交易中人性的贪婪具体表现 1 重仓进场 频繁更改策略 希望下一分钟的行情如你所愿 实现一夜暴富 2 贪小钱舍大钱 赚钱时 担心下一秒回调 避免损失 急于了结 赔钱时 不愿意小赔离场 紧攥亏损单 期待价格回到开仓价附近赚钱后再平仓 而导致损
  • 五分钟了解最短路径寻路算法:Dijkstra 迪杰斯特拉

    最短路径查找算法 寻路算法在生活中应用十分常见 本文实现的是关于图的最短路径查找算法 该算法比较常见于游戏和室内地图导航 实现 例子 几个节点之间 相连接的线段有固定长度 该长度决就是通过代价 查找到花费最少的路径 该图结构为 mermai
  • conflux.web3j.RpcException:data = “\“network prefix inconsistent in from(net999) and to(cfxtest)\““

    java conflux sdk报错 SLF4J Failed to load class org slf4j impl StaticLoggerBinder SLF4J Defaulting to no operation NOP log
  • 零基础学Java,这些学习要点一定得注意!

    许多年的编码经历 在Java编程的路上磕磕绊绊也算是经历啦许多 今天我向大家分享一些我个人的自学方法 现在在网上报个正经点的班得花几千块钱 线下就更夸张 都是万元起步 我的这些学习方法如果你能用好 跟花几万块钱报班效果一样强大 希望能在编程
  • 数组的push()、pop()、shift()和unshift()方法

    JavaScript的数组是一个拥有堆栈和队列自身优点的global对象 也就是说JavaScript数组可以表现的像栈 LIFO 和队列 FIFO 一样操作 这也是JavaScript数组强大的可操作性的体现 堆栈和队列 栈和队列都是动态
  • [预训练语言模型专题] SpanBERT: 抽取式问答的利器

    本文为预训练语言模型专题的第16篇 快速传送门 1 4 萌芽时代 风起云涌 文本分类通用技巧 GPT家族 5 8 BERT来临 浅析BERT代码 ERNIE合集 MT DNN KD 9 12 Transformer Transformer

随机推荐

  • linux系统开机启动顺序

    1 加载BIOS BIOS包含了CPU的相关信息 设备启动顺序信息 硬盘和内存信息等等 2 读取MBR MBR指硬盘上第0磁道第一个扇区 存放了预启动信息 分区表信息 3 运行BOOt Loader 一个小程序 调整系统软硬件环境 4 加载
  • 【嵌入式百科】004——ASCLL码表

    在计算机中 所有的数据在存储和运算时都要使用二进制数表示 因为计算机用高电平和低电平分别表示1和0 例如 像a b c d这样的52个字母 包括大写 以及0 1等数字还有一些常用的符号 例如 等 在计算机中存储时也要使用二进制数来表示 而具
  • 用pandas的read_csv函数读取csv文件某一列,每间隔5个数读取一个值,写出代码

    使用pandas read csv 读取csv文件中某一列 每间隔5个数读取一个值的代码如下 import pandas as pd 读取csv文件 df pd read csv 文件路径 获取某一列数据 column df 列名 每间隔5
  • 樱花映射手机上用linux,Sakura Frp 成功迁移至 Linux 服务器

    之前 Sakura Frp 主站是搭建在 IIS 10 0 PHP 5 4 45 nts MySQL 5 7 的服务器上的 机器是 i5 6500 PHP 5 4 45 安全性不够高 性能也很差 MySQL 在高并发请求下还是不够快 于是琢
  • PADS Router VX2.7 常规设计规则

    双击PCB空白区域跳出 设计特性 点击层 布线可以选择能否布线 如果关掉则该层无法布线 栅格 也可以使用快快捷键 G 5 GD 5中间需要空格与layout和logic不同 安全间距与layout设置一致 需要根据板厂生产工艺来决定 这些间
  • 上三角、下三角、对称矩阵

    说明 上三角矩阵是矩阵在对角线以下的元素均为0 即Aij 0 i gt j 例如 1 2 3 4 5 0 6 7 8 9 0 0 10 11 12 0 0 0 13 14 0 0 0 0 15 下三角矩阵是矩阵在对角线以上的元素均为0 即A
  • 华为OD机试真题 Java 实现【火车进站】【牛客练习题】

    一 题目描述 给定一个正整数N代表火车数量 0
  • 源端串联端接详解(转载)

    来源 一博自媒体 时间 2016 4 13 类别 微信自媒体 文 袁波 一博科技高速先生团队队员 拓扑和端接序列文章 记得刚接触SI的时候最先遇到的信号完整性问题就是过冲和振铃 产生过冲和振铃的最直接原因就是传输通道阻抗不匹配 抑制过冲和振
  • vs2019无法打开文件“libboost_thread-vc141-mt-gd-1_69.lib”

    最近在用darknet做目标检测相关的东西 然后是在windows环境下进行的 需要用到boost 但是这是我第一次使用boost 就像个小白一样 才了解到boost使用需要先编译 然后使用其它的来调用这个lib库 所以才会出现下面的这种报
  • AR模型是一种常用的信号建模方法,其目的是找到一些线性组合使得当前时刻的信号值能够由过去时刻的信号值预测得到

    AR模型是一种常用的信号建模方法 其目的是找到一些线性组合使得当前时刻的信号值能够由过去时刻的信号值预测得到 在实际应用中 需要对信号的功率谱密度进行估计 本文将介绍基于LS估计和Cadzow谱估计法来实现AR模型的信号功率谱密度估计方法
  • Vue项目中引入Jquery

    文章目录 前言 1 进入项目根目录 执行如下命令 安装jquery依赖 2 在webpack config js中添加如下配置项 3 在main js中引入 加入下面这行代码 全局引入 总结 前言 记录在vue项目中如何引入jquery 1
  • LSTM matlab实现

    前期在学习特征分类的时候确实花了不少功夫 想去了解一下长短时记忆网络的分类效果如何 这里主要分享一下LSTM的一些简介和代码 这个例子展示了如何使用长短时记忆 LSTM 网络对序列数据进行分类 若要训练深度神经网络对序列数据进行分类 您可以
  • Qt之QTextEdit

    关于QTextEdit Qt5对Qt4的做了一些小的改动 看上去很多方法都发生了变化 但万变不离其中 如 槽函数setFontFamily const QFont 变为setFontFamily const QString fontFami
  • Could not retrieve mirrorlist http://poptop.sourceforge.net/yum/stable/mirrorlist-poptop-stable-rhel

    解决说明 rm etc yum repos d pptp repo yum update
  • 手把手教你Hook Android 点击事件

    文章目录 前言 一 什么是Hook 二 Hook的优势 三 Hook前置条件 1 反射 2 代理模式 四 Hook实战 总结 前言 随着技术的不断创新 Android的需求也是越来越多 Hook技术是走向Android高级开发的必经之路 提
  • linux 命令ls /du用法

    copy https www cnblogs com xueqiuqiu p 7635722 html ls的用法 ls l grep wc l或find company type f wc l 查看某文件夹下文件的个数 包括子文件夹里的
  • LeetCode数据库题目汇总二(附答案)

    81 查询结果的质量和占比 查询表 Queries Column Name Type query name varchar result varchar position int rating int 此表没有主键 并可能有重复的行 此表包
  • Java Web 里Servlet的介绍与理解

    文章目录 目录 文章目录 前言 一 Servlet是什么 Servlet介绍 Servlet的工作流程可以用下面的图来表示 二 使用Servlet的步骤 1 创建一个Maven项目 然后在pom xml中导入所需的Jar包 2 编写继承了S
  • 练习题_进程

    1 一个正在运行的进程 当发生某一事件 将其挂在 A A 等待队列 B 运行队列 C 就绪队列 D 任意一个队列 解析 只有在分时系统时间片完时 进程由运行转为就绪状态 一 般来说 有事件发生时 进程会被挂在等待队列 2 下列选项中 导致创
  • MySQL用户管理和权限管理

    MySQL用户管理和权限管理 在项目中 一个数据库有很多人需要使用 不能所有的人都使用相同的权限 如果人比较多 一人一个用户也很难管理 一般来说 会分超级管理员权限 管理员权限 读写权限 只读权限等 这样方便管理 当然 具体怎么管理权限根据