MYSQL数据库(六)用户、权限管理和DCL语句

2023-10-29

1 MySQL用户管理

元数据数据库:mysql
系统授权表:

'USERNAME'@'HOST'

@'HOST':
	主机名: user1@'web1.magedu.org'
IP地址或Network
	通配符: % _
	示例:172.16.%.% user2@'192.168.1.%'

创建用户:CREATE USER

CREATE USER 'USERNAME'@'HOST' [IDENTIFIED BY 'password']

新建用户的默认权限:USAGE

用户重命名:RENAME USER

RENAME USER old_user_name TO new_user_name;

删除用户:

DROP USER 'USERNAME'@'HOST‘

范例:删除默认的空用户

DROP USER ''@'localhost';

修改密码

注意

  • 新版mysql中用户密码可以保存在mysql.user表的authentication_string字段中
  • 如果mysql.user表的authentication_string和password字段都保存密码,authentication_string优先生效
#方法1
SET PASSWORD FOR 'user'@'host' = PASSWORD(‘password');
#方法2
UPDATE mysql.user SET password=PASSWORD('password') WHERE clause;
#mariadb 10.3
update mysql.user set authentication_string=password('ubuntu') where
user='mage';
#此方法需要执行下面指令才能生效:
FLUSH PRIVILEGES;

忘记管理员密码的解决办法:

  1. 启动mysqld进程时,为其使用如下选项:
--skip-grant-tables --skip-networking
  1. 使用UPDATE命令修改管理员密码
  2. 关闭mysqld进程,移除上述两个选项,重启mysqld

范例:破解root密码

[root@centos8 ~]#vim /etc/my.cnf
[mysqld]
skip-grant-tables
		skip-networking
[root@centos8 ~]#systemctl restart mariadb
[root@centos8 ~]#mysql
#mariadb 新版
MariaDB [(none)]> update mysql.user set authentication_string=password('ubuntu')
where user='root';

#mariadb 旧版
MariaDB [(none)]> update mysql.user set password=password('ubuntu') where
user='root';

[root@centos8 ~]#systemctl restart mariadb
[root@centos8 ~]#vim /etc/my.cnf
[mysqld]
#skip-grant-tables
		#skip-networking

[root@centos8 ~]#systemctl restart mariadb
[root@centos8 ~]#mysql -uroot -pubuntu

2 权限管理和DCL语句

权限类别

  • 管理类
  • 程序类
  • 数据库级别
  • 表级别
  • 字段级别

管理类

  • CREATE USER
  • FILE
  • SUPER
  • SHOW DATABASES
  • RELOAD
  • SHUTDOWN
  • REPLICATION SLAVE 数据库复制
  • REPLICATION CLIENT
  • LOCK TABLES
  • PROCESS
  • CREATE TEMPORARY TABLES

程序类:针对 FUNCTION、PROCEDURE、TRIGGER

  • CREATE
  • ALTER
  • DROP
  • EXCUTE

库和表级别:针对 DATABASE、TABLE

  • ALTER
  • CREATE
  • CREATE VIEW
  • DROP INDEX
  • SHOW VIEW
  • WITH GRANT OPTION:能将自己获得的权限转赠给其他用户

数据操作

  • SELECT
  • INSERT
  • DELETE
  • UPDATE

字段级别

  • SELECT(col1,col2,…)
  • UPDATE(col1,col2,…)
  • INSERT(col1,col2,…)

所有权限

  • ALL PRIVILEGES 或 ALL

授权:GRANT

GRANT priv_type [(column_list)],... ON [object_type] priv_level TO 'user'@'host'
[IDENTIFIED BY 'password'] [WITH GRANT OPTION];
priv_type: ALL [PRIVILEGES]
object_type:TABLE | FUNCTION | PROCEDURE
priv_level: *(所有库) |*.* | db_name.* | db_name.tbl_name | tbl_name(当前库
的表) | db_name.routine_name(指定库的函数,存储过程,触发器)
with_option: GRANT OPTION
| MAX_QUERIES_PER_HOUR count
| MAX_UPDATES_PER_HOUR count
| MAX_CONNECTIONS_PER_HOUR count
| MAX_USER_CONNECTIONS count

参考:https://dev.mysql.com/doc/refman/5.7/en/grant.html

范例:

GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost';
GRANT ALL ON wordpress.* TO wordpress@'192.168.8.%' IDENTIFIED BY 'magedu';

#创建用户加授予权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.8.%' IDENTIFIED BY 'magedu' WITH GRANT OPTION;  
#mysql8上已淘汰

取消授权:REVOKE

REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON
[object_type] priv_level FROM user [, user] ...

参考:https://dev.mysql.com/doc/refman/5.7/en/revoke.html

范例:

REVOKE DELETE ON testdb.* FROM 'testuser'@‘172.16.0.%;

查看指定用户获得的授权

Help SHOW GRANTS
SHOW GRANTS FOR 'user'@'host';
SHOW GRANTS FOR CURRENT_USER[()];

注意:MariaDB服务进程启动时会读取mysql库中所有授权表至内存
(1) GRANT或REVOKE等执行权限操作会保存于系统表中,MariaDB的服务进程通常会自动重读授权表,使之生效
(2) 对于不能够或不能及时重读授权表的命令,可手动让MariaDB的服务进程重读授权表:mysql>FLUSH PRIVILEGES;

3 MySQL的图形化的远程管理工具

在MySQL数据库中创建用户并授权后,可以使用相关图形化工具进行远程的管理。

常见的图形化管理工具:

  • Navicat
  • SQLyog

3.1 Navicat 工具
在这里插入图片描述
在这里插入图片描述
3.2 SQLyog 工具
在这里插入图片描述

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

MYSQL数据库(六)用户、权限管理和DCL语句 的相关文章

  • BIT(1) 的存储大小是多少?

    我一直认为a的存储大小BIT 1 列为 1 位 But http dev mysql com doc refman 5 6 en storage requirements html http dev mysql com doc refman
  • 将mysql数据导入kubernetes pod

    有谁知道如何将我的 dump sql 文件中的数据导入到 kubernetes pod 中 直接 与处理 docker 容器的方式相同 docker exec i container name mysql uroot password se
  • 使用WordPress get_results()数据库函数是否可以防止sql注入

    似乎找不到答案 但想知道以下对数据库的查询是否容易受到 SQL 注入的攻击 searchPostResults wpdb gt get results querySearchVals OBJECT 这是使用的查询 global wpdb o
  • 返回表中不存在的记录

    如何获取表中没有记录的ID 例如 select id name mail from users where id in 2 3 4 5 6 该查询返回记录 2 3 4 的输出 但不返回记录 5 和 6 因为表中不存在记录 现在我想知道表中没
  • 如何在 mySQL 中定义自定义 ORDER BY 顺序

    在 MySQL 中如何定义自定义排序顺序 为了尝试解释我想要的内容 请考虑这张表 ID Language Text 0 ENU a 0 JPN b 0 DAN c 1 ENU d 1 JPN e 1 DAN f 2 etc 在这里 我想返回
  • 如何修复损坏的 xampp 'mysql.user' 表?

    我昨天使用 Xampp 创建了一些简单的基于 Web 的实用工具 今天我想继续研究它 但 xampp 控制面板给了我一些奇怪的错误 这是 MySQL 错误日志 2019 07 20 23 47 13 0 Note InnoDB Uses e
  • Laravel 5:如何检索并显示属于特定类别的所有帖子

    我有3张桌子 user id username subreddits id name created at posts id title link user id subreddit id 问题是 我手动获取 subreddit 类别的 i
  • 创建索引可以使用现有索引吗?

    我在 A B 和 C 列上有单独的索引 我想在 A B C 三列上创建一个复合索引 我的会有什么影响existing指数对综合指数creation 数据库会利用它们吗 它们是否无关紧要 或者它们会减慢我的新复合索引的创建速度吗 我正在使用
  • MYSQL sum() 计算不同的行

    我正在寻求在 SQL 查询中使用 sum 的帮助 SELECT links id count DISTINCT stats id as clicks count DISTINCT conversions id as conversions
  • 备份MySQL数据库

    我有一个大约 1 7GB 的 MySQL 数据库 我通常使用 mysqldump 进行备份 这大约需要 2 分钟 但是 我想知道以下问题的答案 mysqldump 是否阻止对数据库的读取和 或写入操作 因为在实际场景中 我不想在备份数据库时
  • 如何根据状态从父表和子表获取数据,其中外键每行具有不同的状态

    我有 2 个具有外键关系的表 情况是我有一个case and a case有很多revisions 和每个revision有自己的status 如果仅更改外键表状态的特定行 我想获取父表数据和子数据 Table Case id case n
  • 使用每个单独行的多个“where”子句更新多行

    我正在尝试像这样更新我的表 Update MyTable SET value 1 WHERE game id 1 x 4 y 8 SET value 2 WHERE game id 1 x 3 y 7 SET value 3 WHERE g
  • 使用 Coldfusion 分页

    是否可以仅使用一个查询在 Coldfusion 中分页并显示页数 我的理解是 您显然可以使用一个查询进行分页 但您需要一个额外的查询来创建页面 这是为了计算结果总数 currentPage 1 resultsPerPage Offset i
  • 通过左连接实现精确分页

    我已经思考这个问题有一段时间了 我认为最好四处询问并听听其他人的想法 我正在构建一个在 Mysql 上存储位置的系统 每个位置都有一个类型 有些位置有多个地址 表格看起来像这样 location location id autoincrem
  • 为什么 MySQL 将 é 与 e 视为相同?

    我使用 Django Web 应用程序将 Unicode 字符串存储在 MySQL 数据库中 我可以很好地存储 Unicode 数据 但是在查询时 我发现 and e被视为好像它们是同一个角色 In 1 User objects filte
  • 为什么我们要关闭 Mysqli 中的结果

    为什么我们要关闭 result mysqli new mysqli localhost root root test if mysqli gt connect errno echo Failed to connect to MySQL my
  • MySQL更改表,添加具有唯一随机值的列

    我有一个表 我添加了一个名为phone 该表还有一个 id 设置为自动增量的主键 如何将随机值插入到电话列中 该值不会重复 以下 UPDATE 语句确实插入了随机值 但并非所有值都是唯一的 另外 我没有被卖掉 我投了phone字段也正确 但
  • sqlalchemy 中的随机 ID(pylon)

    我正在使用 pylons 和 sqlalchemy 我想知道如何将一些随机 id 作为primary key 最好的方法是使用随机生成的 UUID import uuid id uuid uuid4 uuid 数据类型在某些数据库中本机可用
  • 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解使用 nea 的正确语法[重复]

    这个问题在这里已经有答案了 我收到这个错误 ERROR ERRORINSERT INTO new comp reg phno fullname address dept desc VALUES 您的 SQL 语法有错误 检查与您的 Mari
  • 在旧版本的 MySQL (<5.5.0) 中模拟 TO_SECONDS()

    出于性能和简单性的原因 我想以秒的形式获取 MySQL 3 x 服务器中 DATETIME 列的内容 或者实际上任何数字类型 我只是想在使用 UNIX TIMESTAMP 时避免所有明显的时区问题 the我表中的日期确实来自不同的区域设置

随机推荐

  • 创新奇智上市:是李开复心血之作 揭秘背后的塔尖孵化模式

    雷递网 雷建平 1月27日报道 青岛创新奇智科技集团股份有限公司 股份代号 2121 简称 创新奇智 今日在港交所上市 发行价为26 30港元 募资净额10 7亿港元 创新奇智开盘价与发行价持平 以开盘价计算 创新奇智市值超140亿港元 创
  • 用免费的谷歌GPU训练神经网络

    前提是先得注册一个google邮箱 再用该邮箱注册一个谷歌云盘 或者直接用这个谷歌邮箱就可以登陆云盘 1 云盘 网址应该是这个 https drive google com drive 不行就试一下这个 https drive google
  • 透视Matplotlib核心功能和工具包 - 不同图形格式

    Matplotlib创建的报告和仪表板可以以不同的方式使用 它们可以在上游Web应用程序中使用 也可以以PDF文件的形式分发 还可以嵌入到GUI工具箱中或在线交互式地使用 在此 我们将学习如何以各种格式保存报告 以便可以将它们分发给使用者以
  • 从零开始学WEB前端——HTML实战练习

    项目介绍 先做个自我介绍 本人是一个没人写前端所以就自学前端的后端程序员 在此项目中我会和大家一起从零基础开始学习前端 从后端程序员的视角来看前端 受限于作者的水平本项目暂时只会更新到前端框架VUE 不会涉及node js 该项目适合零基础
  • element dialog 垂直水平居中显示

    如何让组件中的dialog在可视区域垂直水平居中 先将dialog放到body的下层 保证自己写的样式相对于视口区域生效 element dialog文档中有个append to body属性 将其设置为true 会将dialog扔到bod
  • OpenWrt之kmod内核不兼容分析

    文章目录 OpenWrt之kmod内核不兼容分析 Kmod内核模块MD5校验 Kmod内核信息 强制安装kmod 解决kmod内核不兼容 查看CPU架构 feeds源参考 OpenWrt之kmod内核不兼容分析 Kmod内核模块MD5校验
  • GPAC MP4文件写入(支持H264、H265)

    1 GPAC模块下载链接https github com gpac gpac或https gpac wp imt fr downloads 2 编译指导https github com gpac gpac wiki Build Introd
  • 华为机试C语言-字符串处理

    题目描述 https pycoder blog csdn net article details 124656685 include
  • 【网络安全】Spring框架漏洞总结(一)

    Spring简介 Spring是Java EE编程领域的一个轻量级开源框架 该框架由一个叫Rod Johnson的程序员在2002年最早提出并随后创建 是为了解决企业级编程开发中的复杂性 业务逻辑层和其他各层的松耦合问题 因此它将面向接口的
  • rxjava 流式开发

    RxJava 是一种支持响应式编程的库 它允许您以流式方式处理异步事件序列 使用 RxJava 您可以将事件序列视为一个流 并使用丰富的操作符对这个流进行转换 过滤 组合等操作 以生成您所需的结果 在 RxJava 中 数据源可以是任何可观
  • MySQL 上机操作--数据库及数据表操作

    前言 如有不当之处 还望指正 一 上机目的 熟练掌握基本表的定义 删除与修改 为后继学习作准备 二 上机设备 1台计算机 数据库系统安装MySql 三 相关准备知识 3 1 掌握数据库的定义 删除与修改 3 2 掌握基本表的定义 删除与修改
  • 程序控制流图

    基本符号 ps 请将线看成弧线 doge 顺序结构 if选择结构 while循环结构 case多分支结构 控制流图由节点和控制流线 弧 两种符号组成 结点以标有编号的圆圈表示 用于表示程序流程图中矩形框 菱形框的功能 是一个或多个分支的语句
  • 10分钟上手Azure Blob Storage

    文章目录 Azure Blob Storage快速上手 背景 什么是Azure Blob Storage Blob Storage的应用场景 环境搭建 安装 运行 修改Blob Storage中的数据 基本操作 使用C 修改文件属性 遇到问
  • 平摊分析典型例题及解答

    Exercise 1 5 对某个数据结构执行大小为 n 的一个操作序列 若 i 为 2 的整数幂 则第 i 个操作的代价 为 i 否则为 1 请利用会计方法分析每次操作的平摊代价 Exercise 2 15 Bill 提出了一种叫做翻转堆栈
  • SpringClud Sleuth + Zipkin + Kafka实现分布式链路追踪

    SpringClud Sleuth Zipkin Kafka实现分布式链路追踪 使用步骤 使用步骤 1 导入 pom 依赖
  • 关于Spring Cloud Gateway 网关限流

    本文将使用以下两种方式实现网关的限流 使用 Spring Cloud Gateway 的 RequestRateLimiter 过滤器工厂基于 Redis 的限流 使用 Sentinel 结合 Spring Cloud Gateway 来实
  • vue动态组件component详解

    附上代码
  • 演唱会门票抢不到?不要慌,教你用python实现自动化抢票

    前言 之前有小伙伴留言说女朋友快生日了 喜欢某某某但是手动买票根本就是买不到 又不想当大冤种从黄牛手里加钱 于是乎在疯狂星期四的晚上遭到 贿赂 的我连夜搞定了 一丶安装环境和配置文件 要用python实现 下载和安装python自然是不用说
  • P1016 旅行家的预算【模拟+贪心】【详解】

    题目链接 思路 这道题是一道很明显的模拟题 但这道题也需要自己的理解 我自己写了些样例 然后找到了其中的模拟 我们假设从一个点出发 对于它的下一个点我们有很多选择 期间定义一个len用以记录满油 单次最远 到达距离 我们造访这条路上的所有点
  • MYSQL数据库(六)用户、权限管理和DCL语句

    成功不易 加倍努力 1 MySQL用户管理 2 权限管理和DCL语句 3 MySQL的图形化的远程管理工具 1 MySQL用户管理 元数据数据库 mysql 系统授权表 USERNAME HOST HOST 主机名 user1 web1 m