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 数据库 额外_Manager额外参数怎么学?mysql数据库学习

说明:主库宕机谁来接管?1. 所有从节点日志都是一致的,默认会以配置文件的顺序去选择一个新主。2. 从节点日志不一致,自动选择最接近于主库的从库3. 如果对于某节点设定了权重(candidate_master1),权重节点会优先选择。但是此节点…

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

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

mysql reflush pri_Mysql Flush privileges命令的功能与使用

flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。通常是在…

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…

mysql 上一条_mysql选择上一条、下一条数据记录

1.表数据结构选择mysql记录上一条,下一条sql语句SELECT * FROM user ORDER BY rank ASC-------------------| ID | rank | name |-------------------| 1 | 1 | admin1 || 2 | 2 | admin2 || 3 | 3 | admin3 || 4 | 4 | admin4 || 5 | 5 | admin5 || 6 | 6 | admin6…

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

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

lr监控mysql_LR通过SiteScope监控mysql

SiteScope下载,安装要想使用LoadRunner监测MySQL数据库的性能,LoadRunner没有提供直接监测 MySQL的功能,所以,我们需要借助sitescope监控,然后在LoadRunner显示sitescope监测结果,这样间接地监控MySQL性能。…

mysql unique 锁_mysql 行锁排查

mysql 锁表: 隔离级别使用RR: mysql> SELECT GLOBAL.tx_isolation, tx_isolation; ---------------------------------------- | GLOBAL.tx_isolation | tx_isolation | ---------------------------------------- | REPEATABLE-READ | REPEATABLE-READ SESSION A: mysql>…

python中基例_Python python从入门到实践(5) --代码复用

函数、类与代码复用代码复用的思想把代码当成资源进行抽象。代码资源化:程序代码是一种用来表达计算的"资源"代码抽象化:使用函数等方法对代码赋予更高级别的定义代码复用:同一份代码在需要时可以被重复使用函数和对象是代码复用的…

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

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

mysql约束添加删除数据_mysql中约束的添加,修改,与删除

MySQL中的约束,添加约束,删除约束,以及其他的一些修饰:一.NOT NULL(非空约束)添加非空约束1)建表时直接添加CREATE TABLE t_user(user_id INT(10) NOT NULL);2)通过ALTER 语句ALTER TABLE t_user MODIFY user_id INT(10) NOT NULL;ALTER TABLE t_user CHANGE user_i…

c++怎么输入带有空格的字符串_杭电OJ 字符串处理类部分题解

一、前言不知不觉已经大三上学期了,可作为一个计算机狗还没有考过CCF-CSP。因平时学习内容主要与安全方面相关,对于此类算法类的考核并没有太多的准备,故打算开始刷题复习算法和数据结构,准备CCF认证。在这里选择杭电的OJ作为准备…

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

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

mysql终端_MySQL之终端(Terminal)管理MySQL

前言:MySQL有很多的可视化管理工具,比如“mysql-workbench”和“sequel-pro-”。 现在我写MySQL的终端命令操作的文章,是想强化一下自己对于MySQL的理解,总会比使用图形化的理解透彻,因为我本来就比较喜欢写代码。同时…

python和node_Python和NodeJS绘图对比

在绘图方面,Python 比 NodeJS 好用,首先 Python 绘图库多,而且 API 强大而完善。 NodeJS 还是少点,一些库还没测就放弃了,需要 window 支持,而我需要在后端执行。 最近一直在搞地面雷达的可视化工作。在研究…

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

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