MYSQL访问控制与安全管理

2023-10-26

用户账户管理

利用select语句查看mysql数据库的使用者帐号

select user from mysql.user;

1)创建用户帐号

语法格式:

create user <用户名> 【identified by [password] 口令 】

<用户名>:指定创建用户帐号,其格式为‘user -name"@"host name’。这里‘user -name’是用户名,‘host name’为主机名,即用户连接mysql时所在主机的名字。如果在创建的过程中,只给出了账户中的用户名,而没有指定主机名,则主机名会默认为是‘%’,表示一族主机

可选项password:用于指定散列口令,即若使用明文设置口令时,需忽略password关键字;如果不想以明文设置口令,且知道password()函数返回给密码的散列值,则可以在口令设置语句中指定此散列值,但需要加上关键字password

identified by子句:用于指定用户账户对应的口令,若该用户账户无口令,则可省略此子句。

<口令>:指定用户帐号的口令,在identified by 关键字或password关键字之后。给定的口令值可以是只由字母和数字组成的明文,也可以是通过password函数得到的散列值。

create user 'zhangsan'@'localhost' identified by '123'
select password('123') #执行结果 *23AE809DDACAF96AF0FD78ED04B6A265E05AA257
create user 'zhangsan'@'localhost' identified by password '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257'

注意:

如果create user语句的使用中,没有为用户指定口令,那么mysql允许该用户可以不使用口令登录系统,然而从安全的角度而言,不推荐这种做法

使用create user语句创建一个用户帐号后,会在系统自身的mysql数据库的user表中添加一条新记录。如果创建的账户已经存在,则语句执行会出现错误。

新创建的用户拥有的权限很少,它们可以登录到mysql,只允许进行不需要权限的操作,如使用show语句查询所有存储引擎和字符集的列表等。

如果两个用户具有相同的用户名和不同的主机名,mysql会将它们视为不同的用户,并允许为这两个用户分配不同的权限集合。

删除用户

语法格式:

drop user<用户名 >,【用户名1】......

注意:

drop user 语句可用于删除一个或多个mysql账户,并撤销其原有权限

使用drop user语句,必须拥有mysql中的mysql数据库的delete权限或全部create user权限

在drop user语句的使用中,如果没有明确地给出账户的主机名,则该主机名会默认为是%

drop user zhangsan@localhost

修改用户帐号

语法格式:

rename user <旧用户> to <新用户>
rename user 'liming'@'localhost' to 'wanghong'@'localhost'

注意:

rename user语句用于对原有mysql账户进行重命名

如果系统中旧帐号不存在或新账户已存在,则语句执行会出现错误

要使用rename user语句,必须拥有mysql中的mysql数据库的update 权限或全局createa user权限

修改用户口令

语法格式:

set password [for <用户名>] = password('新口令') | OLD_password('旧明文口令') | '加密口令值'
​
set password for 'zhangsan'@'localhost'=passwore('456');

for子句:可选项,指定要修改口令的用户

password:表示使用函数password设置新口令,即新口令必须传递到函数password中进行加密

加密口令值:表示已被函数password加密的口令值

select password('hello') #查看hello的散列值

账户权限管理

查看权限语法:

show grants for 'wanghong'@'localhost'

权限的授予

语法:

grant <权限类型> [(<列名>)] [,<权限类型>[(<列名>)]]
on <对象> <权限级别> to <用户>
​
其中<用户>的格式
<用户名> [identified by [passowrd] <口令>]
[with grant option]
|max_queries_per_hour <次数>
|max_updates_per_hour <次数>
|max_connections_per_hour <次数>
|max_user_connections <次数>
grant select(student_id,student_name) on db_school.tb_student to 'wanghong'@'localhost'
grant select,update on db_school.tb_student to 'wanghong'@'localhost' identified by '123' 'huang'@'localhost' identifity by '789'
​
grant all on mytest.* to 'wanghong'@'localhost'

权限转移与限制

(1)转移权限

如果在with子句指定为with grant option,则表示to子句中所指定的所有用户都具有自己所拥有的权限授予其他用户的权利,而不论其他用户是否拥有该权限

grant select,update on mytest.student to 'wang'@'localhost' identified by '123' with grant option

(2)限制权限

在with子句中的with关键字后面紧跟的是max_queries_per_hour等,表示限制

grant select on mytest.student to 'wang'@'localhost' with max_queries_per_hour

权限的撤销

可以使用revoke语句撤销一个用户的权限,此用户不会被删除

语法:

revoke <权限类型> [(<列名>)] [,<权限类型>[(<列名>)]]....
on <对象> <权限名> from <用户1>.....
revoke all privileges ,grant option from user <用户>....
revoke select on mytest.students from 'xiaoming'@'localhost'

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

MYSQL访问控制与安全管理 的相关文章

  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 我可以使用 HSQLDB 进行 junit 测试克隆 mySQL 数据库吗

    我正在开发一个 spring webflow 项目 我想我可以使用 HSQLDB 而不是 mysql 进行 junit 测试吗 如何将我的 mysql 数据库克隆到 HSQLDB 如果您使用 spring 3 1 或更高版本 您可以使用 s
  • 显示标准化数据

    跟进问题 添加 2 个不同表的总和 https stackoverflow com questions 39717541 adding sum from 2 different tables 我创建了3个表 members videos v
  • MySql - 复制监控工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个主 从 MySql 复制 我正在寻找一个允许我监视复制的工具 查看它没有错误 检查滞后等 我更喜
  • 如果没有找到值,如何让 MySQL 中的 SUM 函数返回“0”?

    假设我在 MySQL 中有一个简单的函数 SELECT SUM Column 1 FROM Table WHERE Column 2 Test 如果没有条目Column 2 包含文本 Test 然后该函数返回NULL 而我希望它返回 0 我
  • 如何优化这个MySQL慢(非常慢)查询?

    我有一个 2 GB 的 mysql 表 包含 500k 行 我在没有负载的系统上运行以下查询 select from mytable where name in n1 n2 n3 n4 bunch more order by salary
  • 从另一台计算机访问 MYSQL

    我想开发一个java桌面应用程序 我想在其中设置服务器 这意味着我在这里使用mysql db 该数据库将仅存储在一台电脑上 其余所有用户都可以访问该数据库 所以 我听说了mysql远程连接 其中尝试了一些事情 这些措施如下 我的电脑已连接w
  • MySQL 和 Hibernate 之间的主键自增由谁负责?

    MySQL CREATE TABLE role id role INT 11 unsigned NOT NULL AUTO INCREMENT PRIMARY KEY id role AUTO INCREMENT 1 休眠 Entity p
  • 合并两个 MYSQL SELECT 查询[重复]

    这个问题在这里已经有答案了 可能的重复 如何将两个 Post Category 表 MYSQL SELECT 查询合并为一个 https stackoverflow com questions 12972130 how to combine
  • MySQL“LIKE”搜索不起作用

    我通过 LOAD DATA INFILE 在 MySQL 中导入了一个 txt 数据库 一切似乎都正常 唯一的问题是 如果我使用以下查询在数据库上搜索记录 SELECT FROM hobby WHERE name LIKE Beading
  • Google Cloud SQL 在重新启动时卡住

    我的云 sql 实例长时间处于重新启动状态 在操作窗格中 重新启动的状态显示为待处理 并且还发生了导出 其状态仍为Running 有没有办法可以强制重新启动或取消重新启动或从常规备份中恢复数据 不 没有办法 如果您向 Google 支付高级
  • libmysqlclient.a 和 libmysqlclient_r.a 有什么区别?

    我应该使用哪个来链接 mysqlclient 库 它们之间有什么区别 我似乎找不到答案 谢谢 较新版本的 MySQL 客户端发行版不包含 r 版本 有些可能有从 libmyqslclient r a 到 libmyqslclient a 的
  • 使用Perl/DBI/MySQL/InnoDB查找外键信息

    我想以编程方式查找 MySQL 数据库中特定 InnoDB 表的外键 我正在使用 Perl 我偶然发现 dbh gt foreign key info 我刚刚尝试使用它 但似乎有点错误 它不会返回 ON DELETE 和 ON UPDATE
  • 如果 Row1 = 值 1,则更新其他行

    我有一个小的 php 脚本 用于访问 mySql 数据库 我想在数据库中插入新记录之前查看该数字 值 1 是否等于数据库中的记录 这也在第 1 行 所以我想 查看传入的电话号码是否等于数据库中的电话号码 如果是这样 则必须保持电话号码相同的
  • 在 jQuery AJAX 成功中从 MySql 获取特定响应

    好吧 我有这个 ajax 代码 它将在 Success 块中返回 MySql 的结果 ajax type POST url index php success function data alert data My Query sql SE
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • PHP MySQL 使用选项/选择 HTML 表单标签进行多重搜索查询

    我正在尝试使用两个搜索字段设置基本的 MySQL LIKE 搜索 我不想拥有它 所以它有多个可选搜索字段 例如if isset POST city isset POST name 我不知道如何用 HTML 来做到这一点
  • Mysql用in语句限制

    我正在写一个查询 SELECT user bookmarks id as user bookmark id bookmark id user bookmarks user id bookmark url bookmark website b
  • 删除行导致锁超时

    当我尝试从表中删除行时 我不断收到这些错误 这里的特殊情况是我可能同时运行5个进程 该表本身是一个 Innodb 表 约有 450 万行 我的 WHERE 子句中使用的列没有索引 其他指数按预期运行 这是在事务中完成的 首先删除记录 然后插
  • mysql排序和排名语句

    我需要一些 mysql 语句的帮助 我的表 1 有 7 列 表 2 有 8 列 额外的列名为排名 我的语句应该是这样的 从表 1 中选择全部 然后按 用户数 排序 将其插入表 2 中并排名开始 1 2 3 等 table 1 usernam

随机推荐

  • 使用hexo+github搭建个人博客

    摘要 本文讲述如何使用hexo github搭建属于自己的个人博客 并且配置相应的主题使自己的博客更加美观 1 概念介绍 博客这东西大家应该都不陌生 网上有很多各式各样的博客 很多人也萌生了搭建自己的博客的想法 但是奈何技术有限 前后端技术
  • PyQt5 窗口自适应大小

    用pyqt5 Qt Designer设计界面时 希望窗口各控件可以随着鼠标拖动自适应的改变大小 一直没有找到方法 百度搜索了一圈 都说是要设置sizePolicy 将其Policy改为expanding即可 事实上99 的帖子都是抄来抄着
  • 全国行政区划下载(高德)

    高德地图API提供的行政区划查询 可以获取到行政区域的区号 城市编码 中心点 边界 下辖区域的详细信息 基于该工具进行扩展 对边界数据做转换处理 保存为GeoJson格式文件 方便使用 并且还可以选择转为WGS84坐标 下载地址 CLICK
  • 【C++】解析this指针

    一个类可以有多个对象 怎么能保证引用的是所指定的对象的数据成员呢 在每一个成员函数中都包含一个特殊的指针 这个指针的名字是固定的 即this 它是指向本类对象的一个指针 他的值是当前被调用的成员函数所在对象的起始地址 举例 include
  • 字符串的排列(全排列)——Java、回溯法

    题目描述 输入一个字符串 按字典序打印出该字符串中字符的所有排列 例如输入字符串abc 则打印出由字符a b c所能排列出来的所有字符串abc acb bac bca cab和cba 输入描述 输入一个字符串 长度不超过9 可能有字符重复
  • 奈奎斯特采样定理-为什么采样率需要时被测信号最高频率的两倍

    奈奎斯特采样定理 采样定理在1928年由美国电信工程师H 奈奎斯特首先提出来的 因此称为奈奎斯特采样定理 1933年由苏联工程师科捷利尼科夫首次用公式严格地表述这一定理 因此在苏联文献中称为科捷利尼科夫采样定理 1948年信息论的创始人C
  • MySQL数据库与SQL语言的规范

    文章中所有操作均是在 MySQL 5 7 版本下进行的 SQL语言 结构化查询语言 Structured Query Language 简称SQL 是一种特殊目的的编程语言 是一种数据库查询和程序设计语言 用于存取数据以及查询 更新和管理关
  • 数值类型翻转教学设计

    第1关 计算边长为整数的正方形面积 任务描述 本关任务 编写一个能计算正方形面积的小程序 相关知识 为了完成本关任务 你需要掌握 1 输入函数 2 字符串转整数 3 数值运算 4 输出函数 第2关 计算边长为浮点数的正方形面积 任务描述 本
  • UPC--换座位(一道没想到暴力就能过的题)

    题目描述 聪聪和同学们正在玩这样一个换座位的游戏 班上共有2n个少先队员 开始时每个少先队员坐在自己的板凳上排成一队 由聪聪开始击鼓 每次击鼓开始时 前n个同学坐到第2 4 2n个板凳上 后n个同学坐到第1 3 2n 1个板凳上 击鼓结束时
  • 【R语言】对图片进行裁剪 图片批量裁剪

    对图片进行裁剪 批量裁剪 示例如图 对图片进行裁剪 library magick pic lt image read study jpg plot pic print pic image info pic 500x300 10 20 Cro
  • 一个http请求就是一个线程吗?Java的服务是每收到一个请求就新开一个线程来处理吗?

    声明 本文并非原创 但是原文排版和语言逻辑有明显的问题 因此就对原文进行一个梳理 并加以补充 来帮助理解 原文链接 CSDN 一个http请求就是一个线程吗 java的服务是每收到一个请求就新开一个线程来处理吗 问题一 一个http请求就是
  • IE8 定义文档兼容性

    更新日期 2009 年 2 月 文档兼容性可定义 Internet Explorer 呈现网页的方式 本文将介绍文档兼容性 如何为网页指定文档兼容性模式以及如何确定网页的文档模式 简介 了解文档兼容性的必要性 了解文档兼容性模式 指定文档兼
  • qt 静态成员变量,C++--类的静态成员变量

    一 成员变量的回顾 1 通过对象名能够访问public成员变量 2 每个对象的成员变量都是专属的 3 成员变量不能在对象之间共享 Q 新的需求 1 统计在程序运行期间某个类的对象数目 2 保证程序的安全性 不能使用全局变量 3 随时可以获取
  • 从.weights中提取权重数据

    从 weights文件中提取权重数据 前言 weights文件 将 weights文件转换成 h5 转换脚本convert py 其他准备工作 转换成 h5 从 h5文件提取数据 关于 h5文件 摸清 h5的子文件夹名字 前言 我在做有关Y
  • 【基于MATLAB的数字图像处理】大作业·综合图像处理平台

    系列文章目录 基于MATLAB的数字图像处理 第一章 绪论 基于MATLAB的数字图像处理 第二章 视觉系统与图像处理系统 基于MATLAB的数字图像处理 第三章 基本图像变换 基于MATLAB的数字图像处理 第四章 图像增强 基于MATL
  • 力扣-235-二叉搜索树的最近公共祖先-javaScript实现

    一 题目链接 力扣题目链接 二 题意分析 因为本题操作的是二叉搜索树 所以我们可以根据二叉搜索树的特性来做题 关于二叉搜索树的特性在前面也有提到 这里就不再过多赘述 先说迭代 对于本题迭代法相当代码简单 三 代码实现 迭代法 var low
  • STM32系列(HAL库)——F103C8T6通过SPI方式读写W25Q64—(Flash存储模块)

    1 软件准备 1 编程平台 Keil5 2 CubeMX 3 XCOM 串口调试助手 2 硬件准备 1 W25Q64模块 2 F1的板子 本例使用经典F103C8T6 3 ST link 下载器 4 USB TTL模块 5 杜邦线若干 3
  • 基于小波变换的条纹图相位提取方法及matlab代码实现

    基于小波变换的条纹图相位提取方法及matlab代码实现 引言 在许多光学应用中 条纹图像是一种常见的景象 例如 条纹图像可以用于形貌量测 如三维重建 运动测量 如速度场测量 以及表面缺陷检测等领域 而在条纹图像处理中 相位提取是一项非常关键
  • Hashpump实现哈希长度扩展攻击

    Hashpump实现哈希长度扩展攻击 RCEME 0x01 HASH长度拓展攻击 哈希长度拓展攻击的原理有点过于复杂了 这里直接copy其他大佬的描述了 长度扩展攻击 length extension attack 是指针对某些允许包含额外
  • MYSQL访问控制与安全管理

    用户账户管理 利用select语句查看mysql数据库的使用者帐号 select user from mysql user 1 创建用户帐号 语法格式 create user lt 用户名 gt identified by password