android通过用户名密码访问服务器获取信息_MySQL ------ 管理用户对数据库的访问控制(GRANT 与 REVOKE)(二十九)...

数据库服务器通常包含着关键的数据,所以为了确保这些数据的安全和完整需要要利用访问控制。

MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权,既不能多也不能少(即用户不能对过多的数据具有访问权)

访问控制:需要给用户提供他们所需的访问权,且仅提供他们所需的访问权。

管理访问控制需要创建和管理用户账号
如:
1、多数用户只需要对表进行读和写,但少数用户甚至需要能创建和删除表
2、某些用户需要读表,但可能不需要更新表
3、你可能想允许某些用户添加数据,但不允许他们删除数据
4、某些用户(管理员)可能需要处理用户账号的权限,但多数用户可能不需要
5、你可能想让用户通过存储过程访问数据,但不允许他们直接访问数据
6、你可能根据用户登录的地点限制对某些功能的访问

最开始安装时为了操作数据库,需要登陆MySQL,创建一个名为root用户账号,使它对整个MySQL 服务器具有完全的控制,之前的操作也是依赖于此账号,你一个人怎么弄都行,但是要是实际使用的话,应该创建一系列的账号,有的用于管理,有的用于用户、开发等等

注意:

1、访问控制的目的不仅仅是防止用户的恶意企图,更常见的是防止无意识的操作错误,通过保证用户不能执行他们不应该执行的语句,有利于维护数据的安全,

2、要严肃对来root 登录使用,仅在绝对需要的时候使用它

MySQL Administrator 提供了一个图形用户界面,用来管理用户及账号权限。本文使用语句进行操作 ,下面就来介绍一下

One、查看用户

MySQL用户账号和信息存储在名为mysql 的数据库,一般不需要直接访问mysql 数据库和表,但有时需要直接访问

需要直接访问它的时机之一是在需要获得所有用户账号列表时

-- 使用名为mysql 的数据库

b97bfa3806e985e976c6049d2de196f7.png

从中可以看出,mysql 数据库中有一个名为user 的表,它包含所有的用户账号,

user表中有一个名为user 的列,它存储用户登录名。新安装的一般就一个root 用户

80bb3874a75de13c7d40558cf426f36a.png

试验对用户账号和权限进行更改的最好方法就是打开多个数据库客户机(如mysql命令行实用程序的多个副本),作为一个管理登录,其他作为被测试的用户登陆

Two、创建用户账号(并指定密码)

cretae user 创建一个新用户账号,在创建用户账号时不一定需要口令(即密码),指定口令时使用 IDENTIFIED BY 进行指定

-- create user 用户名 identified by 密码

72c2b0f06fb1183b3992c38e6def36c1.png

这个表有 45行,有很多是一些其访问权限的控制

ae24d0e13c345c80bcbfa23d6e6efc2d.png

验证一下有没有,创建成功

376377df89ef5086ade83a0240ba3205.png

注意:

1、identified by 指定的口令为纯文本,MySQL将在保存到user 表之前对其加密,为了作为散列值指定口令使用 IDENTIFIED BY PASSWORD

IDENTIFIED BY PASSWORD

2、GRANT 语句也可以用于创建用户账号,但一般使用CREATE USER ,因为create user 语句最为清楚和简单,也可以使用insert语句进行增加不过一般不建议,因为MySQL用来存储用户账号信息的表(以及表模式等)极为重要,对他们的任何毁坏都有可能严重的伤害到MySQL服务器,因此相对于直接处理来说,最好是用标记和函数来处理这些表。

Three、重命名用户名 (RENAME)

-- RENAME USER 原来的名字 TO 现在的 

4ab168c2c2fa74875544d6269301f059.png

注意:仅在MySQL 5 或之后的版本支持上述语句(rename user),之前是通过 update语句进行更新

Four、更改口令

使用 SET PASSWORD ,新的口令必须加密

主要分为两种,一种是给指定的用户设置密码,另一种是自己设置自己的密码

--  给 obge 这个用户更改密码

26d89ed9bc74d1d2219932c06ab13991.png

注意:SET PASSWORD 更新用户口令时,新的口令必须传递到Password()函数中进行加密

Five、删除用户账号(DROP)

为了删除一个用户账号(以及相关的权限),使用 DROP USER 用户名

-- 删除名为 boge 的用户 

1cf0eee06a840d599921b1dcf126155a.png

注意:MySQL 5 或之后的版本可以通过 drop user 来删除用户账号和所有相关的账号权限,但是之前的版本,使用drop user 语句只能删除用户账号,不能删除账号权限,还要先借助 REVOKE删除与账号相关的权限,然后在使用drop user 删除账号。

Six、设置访问权限(GRANT)

在创建用户账号后必须接着分配访问权限。因为新创建的用户账号没有访问权限,虽然可以登陆MySQL但不能看到数据,不能执行任何数据操作。

1、查看赋予用户账号的权限

-- SHOW GRANTS FOR 用户账号名 

effca9765f21bf8de23fbce00fcbf476.png

上述中, USAGE ON *.* 表示没有权限,与之相对的是 ALL PRIVILEGES ON *.* 与所有权限。

而 GRANT USAGE ON *.* TO 'obge'@'%' 就可以理解为,在任意数据库和任意表上对任何东西没有权限。

MySQL 的权限使用: 用户名和主机名结合定义(user@host),

如果不指定主机名,则使用默认的主机名%授予用户访问权限而不管主机名

5d49881de6e1058bccb304dbb42aa5ce.png

2、使用 grant 语句进行设置权限

设置时需要至少提供:要授予的权限被授予访问权限的数据库或表以及 用户名

如:设置 obge 这个用户只可以查询 bookstu 这个数据库的所有表

-- GRANT SELECT ON 数据库名.* TO  用户名 

53b846ed9717a2c6d4478db986f5c59c.png

上述 grank 允许 用户在bookstu 数据库的所有表(bookstu.*)上使用 select,通过只授予select 访问权限,用户 obge ,对bookstu 这个数据库中的所有数据具有只读权限。

登陆测试一下

7ad84919cd0c5d26b82aa0f8c8013cf5.png

3、撤销特定的权限(REVOKE)

--  REVOKE  设置的权限  from 用户名 

撤销用户obge 对 bookstu.archive_orders 的增加权限

a672bbde094bebd780647154a6ddefde.png

注意: 被撤销的访问权限必须存在否则会报错

4、GRANT 与 REVOKE

4.1、grant 与revoke 可在以下几个层次进行控制访问权限

a、整个服务器,使用GRANT ALL 和 REVOKE ALL

b、整个数据库,使用 ON database.*

c、特定的表,使用ON databse.table

d、特定的列

e、特定的存储过程

4.2、可以授予和撤销的每个权限

3996ba6a23c400ff9c2c327aeaa81570.png

使用 grant 和revoke 结合表中列出的权限,可以完全控制用户对数据做什么事情和不能做什么事情。

注意:

1、在使用grant和 revoke时,用户账号必须存在,但对所涉及的对象没有这个要求。这允许管理员在创建数据和表之前设计和实现安全措施,但是这样做的副作用是当某个数据库或表被删除时,相关的访问权限依然存在,而且将来重新创建该数据库或表时,这些权限依然起作用,所以建议,在设置权限时对那些存在的数据库和表进行设置表

2、可以通过列出各个权限并用逗号分隔,将多条grant 语句串在一起

-- 允许obge 对 bookstu 数据库中的表执行  增加和查看操作 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql安全补丁如何处理_3分钟学会mysql数据库的逻辑架构原理

这篇文章主要是从mysql数据库的逻辑架构来认识掌握mysql的原理。只要是稍微有一点计算机的相关知识相信都能看明白。一、笼统的逻辑架构先给出一张逻辑架构图,这张图是让你从宏观的角度来分析认识一下。从这张图你可以获取到如下的信息:(1&am…

onclick 源码_仿照React源码流程打造90行代码的Hooks

作者:苏畅转发链接:https://mp.weixin.qq.com/s/YLSD4IojDWTPlov_RQtVAA前言你可能已经看过其它简易的Hooks实现。那么本文和其它实现有什么区别呢?本文的实现完全参照React源码的运行流程。学懂本文,去看React源码,你…

java写一个窗体并连接MySQL_大神帮忙写一个简单地java页面,连接MySQL数据库之后能够显示数据库上的数据...

展开全部用jdbc 连接mysql数据库就行了,网上搜下一大把。--记得在classpath下加入mysql 的jdbc驱动包。/*** author :来e68a84e8a2ad3231313335323631343130323136353331333337386636自互联网*/import java.sql.DriverManager;import java.sql.ResultSet…

java break 在if 中使用_java中使用国密SM4算法详解

前言上次总结了一下加密算法的分类(加密算法有集中形式,各有什么不同?),现在我们用java语言实现一下SM4:无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。ps:我们既可以基…

移动web前端开发框架_移动前端开发是Web前端开发吗?

移动端开发并不是Web前端开发,但移动前端开发和web前端开发其实都属于前端开发的范围,目前前端发展的趋势就是大前端,可以说是包罗万象。但不论趋势如何发展,目前来看HTML、CSS和JavaScript依然是整个前端开发的三大基石。所以不论…

mtk一键usb驱动_三菱MRJEB驱动器报错,导致报错原因37.1参数设置范围异常?

三菱MR-JE-B驱动器报错,导致报错原因37.1参数设置范围异常?最近海蓝机电工程师们在做一个项目,做的是三菱MR-JE-B驱动器。工程师们在实操这个项目过程中遇到各种问题,其中就像驱动器报错的问题,导致报错的原因显示37,1…

将虚拟主机加入到netskills.net域环境_网站建设阿里云虚拟主机、ECS服务器、企业邮箱选择购买指南...

对于刚接触阿里云的人来说可能看到阿里云的产品介绍页面会比较头晕,各种产品分类,而且同一个产品在不同的分类目录下都能看到,下面简单介绍一下制作网站过程中常用的阿里云的产品。阿里云在网站建设方面常用的服务主要有云虚拟主机、ECS云服务…

linux查看硬盘smart_Linux检测磁盘坏道工具用什么命令

请关注本头条号,每天坚持更新原创干货技术文章。如需学习视频,请在微信搜索公众号“智传网优”直接开始自助视频学习1. badblock命令简介badblock命令用于查找磁盘中损坏的区块。 电脑硬盘出现坏道后,如果不及时更换或进行技术处理&#xff0…

python弹出框_selenium+python学习——弹出框

1、alert警告框 以百度搜索设置为例,在进行搜索设置后点击“保存设置”按钮,弹出alert对话框,如下图所示:实现代码: from selenium import webdriver import time as t from selenium.webdriver.support.select import…

网页打开共享目录_你会做Excel文件目录吗?真的太太太太太简单了!

点击蓝字发送【2020】免费领 100图表模板!本文作者:长小安本文编辑:尔冬哈喽大家好!我是长小安,一名和秋叶一起学了多年 Excel、现在成功出道投稿的同学~让我来猜猜,你的电脑是不是也像我的一样&#xff0c…

centos7搜狐 mysql_基于centOS6.7搭建LAMP(httpd-2.4.18+mysql-5.5.47+php-5.6.16)环境

首先确保系统可以联网。设置IP地址以及虚拟机安装linux在此略过。本文采用centos6.7 64位minimal版、php5.6.16、httpd-2.4.18、mysql-5.5.47版搭建lamp环境。默认设置软件下载目录/usr/local/src,软件安装目录/app/local/下,安装顺序是apache→mysql→p…

c语言 如何创建adt_编程那些事儿:面向对象编程基石之数据抽象(ADT)

数据抽象本文接上一篇《编程那些事儿:为什么说抽象是面向对象编程的根基【1】?》,在了解了面向对象编程抽象的过程抽象后,下面我们继续聊一下数据抽象。数据抽象可以说面向对象编程最重要的基石。而数据抽象的结果就是数据类型(或简单的类型)…

mysql客户端版本太低_windows一机多装mysql,5.5低版本+5.8高版本

安装第一个mysql,压缩版或者安装版,过程省略,目录如下:运行中输入“regedit”进入后,找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL其实mysql启动的路径一般为:可执行文件的路径&…

java8 list 行转列_Java14 都来了,你还不会用 Java8吗?

Java 8 于2014年3月18日发布,并且成为主流的 Java,如今,虽然 Java 14 都已经发布了,但是 开发者和公司选择的版本依旧是经久不衰的 Java 8 版本,如果你还不了解这些新特性,是时候学习一下了。Java 8 更新的…

mysql主键用完了怎么办_MySQL 自增 ID 用完了怎么办?

MySQL 自增 ID 用完了怎么办?在MySQL中有很多类型的自增ID,每个自增ID都设置了初始值,然后按照一定的步长增加,只要定义了字节长度,那么就会有上限,如果达到上限再次添加,则会报主键冲突错误&am…

python字典统计_python字典计数

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元!字典?thcollections.counter 计数器? image.png找不到键的时候会调用miss方法如果键不是字符串&#xff0c…

java相册_精致小巧的java相册制作方法

本文实例为大家分享了java相册制作方法,供大家参考,具体内容如下注:1)html上的图片是静态指定的。当更新了新的图片时必须手工更新。所以使用Servlet读取本地images中的所有图片,动态显示给用户。2)如果存在中文名的图片&#xff…

利用python画分形图_使用 Python 绘制 Mandelbrot 分形图

以前收集的关于Mandelbrot分形图的Python脚本,Mandelbrot集合的图像因它洛可可式繁复卷曲华丽的风格而受到大众的欣赏和赞叹,与其他分形图案一起,是许多艺术家和设计师的灵感来源。 是由于今天个人电脑计算能力的强大,才有可能让我…

java sound api_Java Sound API

Java Sound API是javaSE平台提供底层的(low-level)处理声音接口。例外,java也提供了简单的实用的高层媒体接口(higher-level) - JMF(Java Media Framework)。Java Sound API 将需要处理的数字音频分为:simpled-audio和midi,分别提供Package来…

java实现的小程序_Java实现 微信小程序 + 消息推送

实现效果:下面要显示五个字段接下来,参照官方文档,一步步实现:一、官方给出请求示例、返回示例二、根据上面编写实体类(1)请求参数Datapublic class SendTemplateReq {/*** 接收者(用户)的 openid*/private String touser;/*** 所…