MySQL 安全性知识要点

添加、删除用户

1.添加用户

可以使用CREAT USER语法添加一个或多个用户,并设置相应的密码。

语法格式:

CREAT USER user [IDENTIFIED BY  [PASSWORD]  'password']

    [,user [IDENTIFIED BY  [PASSWORD]  'password'] ] ...

其中,user的格式为:

‘user_name’@ 'host name'

注:user_name为用户名,host_name为主机名,password为该用户的密码。

使用自选的IDENTIFIED BY 子句,可以为账户给定一个密码。特别是要在纯文本中指定密码,需忽略PASSWORD关键词。如果不想以明文发送密码,而且知道PASSWORD()函数返回给密码的混编制,则可以指定该混编值,则可以制定该混编值,但要加关键字PASSWORD。

CREAT USER用于创建新的MySQL账户。CREAT USER会在系统本身的mysql数据库的user表中添加一个新记录。要是用CREAT USER,必须拥有mysql数据库的CREAT USER权限或INSERT权限。如果账户已经存在,则出现错误。

 例:添加两个新的用户,king的密码为queen,cong的密码为707013

create user

  'king' @ 'localhost' identified by 'queen',

  'cong' @  'localhost' identified by '707013';

完成后可以切换到mysql数据库,从user表中查到刚刚添加的两个用户记录:

use mysql

show tables;

select * from user

注:在用户名后面声明了关键字localhost。这个关键字指定用户创建的使用MySQL的连接所来自的主机。如果一个用户名和主机名中包含特殊符号如“_”,或通配符如“%”,则需要用单引号将其括起。“%”表示一组主机。

如果两个用户具有相同的用户名但主机不同,MySQL将其视为不同的用户,允许为这两个用户分配不同的权限集合。

如果没输入密码,那么MySQL允许相关的用户不使用密码登录。但是从安全的角度并不推荐这种做法。

2.删除用户

 语法格式:

DROP USER  user [, user_name]......

DROP USER  语句用于删除一个或多个MySQL账户,并取消其权限。要使用DROP USER ,必须拥有mysql数据库的全局CREATE USER权限或DELETE权限。

例:删除用户 palo

drop user Palo@localhost;

删除后可以用上面介绍的方法查看一下效果。如果被删的用户已经创建了表,索引或其他数据库对象,它们将继续保留,因为MySQL并没有记录是由谁创建了这些对象。

修改用户名、密码

1.修改用户名

可以使用RENAME USER语句来修改一个已经存在的SQL用户的名字。

语法格式:

RENANE USER old_user TO new_user,

       [, old_user TO new_user]...

注:old_user为已经存在过的SQL用户,new_user为新的SQL用户。

RENAME USER语句用于对原有MySQL账户进行重新命名。要使用RENAME USER,必须拥有全局CREATE USER权限或mysql数据库UPDATE权限。如果旧账户不存在或者新账户已经存在,则会出现错误。

例:将用户king的名字修改为ken

rename user

  ‘king’ @ ‘loacalhost’ to 'ken' @ ‘loacalhost’;

完成后可以用上面的方法查看一下是否修改成功。

2.修改密码

要修改某个用户的登录密码,可以使用SET PASSWORD语句。

语法格式:

SET PASSWORD  [FOR user]=PASSWORD ('newpassword')

注:如果不加FOR user,表示修改当前用户的密码。加了FOR user则是修改当前主机上的特定用户的密码,user为用户名,它的值必须以'user_name' @'host_name'的格式给定。

例:将用户ken的密码改为qen

set password for ‘ken’ @ ‘localhost’ =password(‘qen’);

权限控制

1.授予权限

新的SQL用户不允许访问其他SQL用户的表,也不能立即创建自己的表,它必须被授权。可以被授予的权限有以下几组。

(1)列权限:和表中的一个具体列相关。

(2)表权限:和一个具体表中的数据有关。

(3)数据库权限:和一个具体的数据库中的所有表相关。

(4)用户权限:和MySQL所有的数据库相关。

给某用户授予权限可以使用GRANT语句。使用SHOW GRANTS语句可以查看当前账户拥有什么权限。

GRANT 语法格式:

GRANT priv_type  [(column_list)]  [, priv_type  [(column_list)] ]...

  ON [obect_type] {tbl_name |  *  |   * . *  |  db_name.*}

  TO user [IDENTIFIED BY [PASSWORD]  'password' ]

     [,user [IDENTIFIED BY [PASSWORD]  'password' ]  ]...

  [WITH with_option [with_option] ...]

其中,object_type:

TABLE

|  FUNCTION

|  PROCEDURE

with_option:

GRANT  OPTION

|   MAX_QUERIES_PRE_HOUR  count

|   MAX_UPDATES_PRE_HOUR  count

|   MAX_CONNECTIONS_PRE_HOUR  count

|   MAX_USER_CONNECTIONS  count

注: priv_type为权限的名称,如 SELECT,UPDATE等,给不同的对象授予权限 priv_type的值也不同。TO子句用来设定用户的密码。ON字关键字后面给出的是要授予权限的数据库或表名。

SELECT:给予用户使用SELECT语句访问特定的表的权力。用户也可以在一个视图公式中包含表。然而,用户必须对视图公式中的每个表或视图都有SELECT权限。

INSERT:给予用户使用INSERT语句向一个特定表中添加行的权力。

DELETE:给予用户使用DELETE语句向一个特定表中删除行的权力。

UPDATE:给予用户使用UPDATE语句修改特定表中值的权力。

REFERENCES:给予用户使用创建一个外键来参照特定的表的权力。

CREATE:给予用户使用特定名字创建一个表的权力。

ALTER:给予用户使用ALTER TABLE语句修改表的权力。

INDEX:给予用户使用在表上定义索引的权力。

DROP:给予用户删除表的权力。

ALL或ALL PRIVILEGES:表示所有权限名。

在授予表权限时,ON关键字后面跟上tb1_name ,tb1_name为表名或视图名。

 

转载于:https://www.cnblogs.com/215cwzx/p/8024627.html

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

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

相关文章

在WildFly的REST Web服务中与Jackson的双向关系

这是使用Jackson的REST Web服务中Java实体之间的双向关系的示例。 假设我们在两个实体Parent和Child之间存在双向关系。 使用MySQL工作台为这两个表生成SQL模式文件。 DROP SCHEMA IF EXISTS bidirectional_schema ; CREATE SCHEMA IF NOT EXISTS bidirectional_schema DEFA…

ICMP Internet控制报文协议

ICMP报文主要有两大功能:查询报文和差错报文。转载于:https://www.cnblogs.com/gardenofhu/p/8027431.html

Postman安装与使用(网络请求神器)--post、get请求

安装 1、Postman最早是作用chrome浏览器插件存在的,所以,你可以到chrome商店搜索下载安装,因为重所周知的原因,所以,大家都会找别人共享的postman插件文件来安装。由于2018年初Chrome停止对Chrome应用程序的支持。 官…

c# 对象 类

类定义中可以使用的访问修饰符组合none or internal 类只能在当前工程中访问public 类可以在任何地方访问abstract or internal abstract 类只能在当前工程中访问,不能实例化,只能继承public abstract 类可以在任何地方访问,不能实例化&#…

openshift用户管理_OpenShift Express Web管理控制台:入门

openshift用户管理本周, 最新版本的OpenShift为已经很棒的PaaS Cloud提供商带来了两个非常好的功能。 首先,JBoss AS已从7.0升级到7.1,并且所有新的Express Web Management Console已作为预览发布。 在本文中,我们将研究如何使用此…

linux系统搭建ftp服务器--只给某个用户访问其默认目录下的文件

1、环境: window操作系统中安装FlashFXP 软件或xftp; 服务器端的操作系统为centos8; 2、检查安装vsftpd软件 查看所有的安装的软件包 并在结果中查找包含vsftp 的文件 rpm -qa | grep vsftpd如果没有装则使用yum命令安装 yum -y install vsftpd3、创…

12月13日 什么是help_method,session的简单理解, find_by等finder method

helper_methodDeclare a controller method as a helper. For example, helper_method :link_todef link_to(name, options) … end makes the link_to controller method available in the view.课程遇到的如current_cart,current_user. 声明后,就可以在view里面使…

Openshift源中的高可用性Drools无状态服务

嗨,大家好! 在这篇博客文章中,我想举一个简单的例子,展示使用Openshift 3(Docker和Kubernetes)扩展Drools Stateless服务有多么容易。 我将展示如何通过按需提供新实例来扩展我们的服务,以及如何…

FTP配置文件详解vsftpd.conf

FTP配置文件详解vsftpd.conf 转载过来做个笔记,原文地址:https://blog.csdn.net/miss520jenny/article/details/92664533 #vi /etc/vsftpd/vsftpd.conf 1.登录和对匿名用户的设置 write_enableYES //是否对登录用户开启写权限。属全局性设…

Visual C++中MFC消息的分类

Visual C中MFC消息的分为三类:标准(窗口)消息、命令消息、控件消息。 1、标准(窗口)消息:窗口消息一般与窗口内部运作有关,如创建窗口,绘制窗口,销毁窗口,通常,消息是从系统发到窗口&#xff0c…

为什么配置了vsftpd.conf文件,用户还是可以访问上级目录?

因为选择的连接类型是 SFTP over SSH 所以访问的是 sftp服务器,sftp的配置文件中没对该用户限制根目录,所以可以访问上一级目录。但是,还是不可以写入了,除了该用户的目录文件,其他文件都是只读。 修改 /etc/ssh/sshd…

来呀,快活呀。iOS 超级码农群:538549344

特大喜讯: iOS开发的小伙伴们,咱们有群了 iOS 超级码农交流群: 538549344 建群源于最近好多人加我QQ交流技术问题,有时忙于工作无法及时回复,为了大家的问题能及时得到解答,还是建个群,群里很多…

jpa jsf_完整的Web应用程序Tomcat JSF Primefaces JPA Hibernate –第1部分

jpa jsf我们创建了这篇文章,将展示如何使用以下工具创建完整的Web应用程序:Tomcat7,带有Primefaces的JSF2(Facelets和Libraries)(具有AutoComplete),JPA / Hibernate(具有…

前端性能优化:Add Expires headers

合理设置 HTTP缓存 缓存的力量是强大的,恰当的缓存设置可以大大的减少 HTTP请求。 很少变化的图片资源可以直接通过 HTTP Header中的Expires设置一个很长的过期头 ;变化不频繁而又可能会变的资源可以使用 Last-Modifed来做请求验证。 (1)Apa…

错题

1. 本题考查String对象的声明和赋值方式。C#中没有new String() 这种方式来构造字符串。故选 AC 2. 在CSS中,控制列表样式的属性有:list-style-type,list-style-position,list-style-image,list-style equals比较的是像…

通过微调JVM Garbage Collector减少Java IDE滞后

有没有想过为什么Eclipse / Netbeans会一直暂停一段时间? 特别是在您想向亲爱的同事展示代码中的内容时? 感觉很尴尬和尴尬,不是吗? 我发现大多数时间由于垃圾收集器的执行而导致IDE暂停。 JVM设计中的微妙元素很少起作用&#x…

centos8部署nginx

Nginx 部署 1.创建 www用户, UID、GID 皆是 501,通过cat /etc/passwd,检查是否存在www用户 ~]# groupadd -g 501 www ~]# useradd -u 501 -g www www ~]# cat /etc/passwd 2.下载相应版本 ~]# wget http://nginx.org/download/nginx-1.16…

javascript-发布订阅模式

说明:本篇文章转载自小火柴的蓝色理想的一篇博文。原文地址:http://www.cnblogs.com/xiaohuochai/p/8031564.html 发布—订阅模式又叫观察者模式,它定义对象间的一对多的依赖关系,当一个对象的状态发生改变时,所有依赖…

centos8部署Django项目---后台运行

参考:https://www.cnblogs.com/yoyoketang/p/10220941.html 一、安装 pip install django创建项目 django-admin startproject mysite打开项目配置settings.py文件 cd mysite/mysitesettings.py文件( DEBUG TrueALLOWED_HOSTS [127.0.0.1, localh…

python-列表list和元组tuple

list Python内置的一种数据类型是列表:list。list是一种有序的集合,可以随时添加和删除其中的元素。 比如,列出班里所有同学的名字,就可以用一个list表示: >>> classmates [Michael, Bob, Tracy] >>&g…