mysql函数

读写分离之Atlas

不想你离开。 提交于 2019-12-02 05:56:06
1、atlas介绍 Atlas是由Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它在MySQL官方推出的 MySQL-Proxy 0.8.2 版本的基础上,修改了大量bug,添加了很多功能特性。目前该项目在360公司内部得到了广泛应用,很多MySQL业务已经接入了Atlas平台,每天承载的读写请求数达几十亿条。同时,有超过50家公司在生产环境中部署了Atlas,并且这些数字还在不断增加。 2、安装atlas 官方提供的Atlas有两种 Atlas ( 普通 ) : Atlas-2.2.1.el6.x86_64.rpm Atlas ( 分表 ) : Atlas-sharding_1.0.1-el6.x86_64.rpm 我们只需要下载普通的即可。 安装步骤: 进入 /usr/local 目录,创建文件夹 AtlasSrc [root@localhost ~]# cd /usr/local/ [root@localhost local]# mkdir AtlasSrc [root@localhost local]# cd AtlasSrc/ [root@localhost AtlasSrc]# 将 Atlas 安装包复制进来目录 AtlasSrc 下 ( 复制过程略 ) 安装atlas rpm -i Atlas-2.2.1.el6

数据库之 MySQL --- 数据处理 之 单行函数、组函数 (四)

…衆ロ難τιáo~ 提交于 2019-12-02 05:49:27
【1】 LOWER : 将字符串中的内容全部转成小写 UPPER : 将字符串中的内容全部转成大写 SELECT LOWER ('abAcD') FROM DUAL SELECT UPPER('abAcd') FROM DUAL SELECT UPPER(first_name) FROM employees 【2】CONCAT : 字符串拼接 SUBSTR :截取子串,从2的位置开始偏移量为3 LENGTH :长度 CONCAT('Hello', 'World') HelloWorld SUBSTR('HelloWorld',1,5) Hello LENGTH('HelloWorld') 10 INSTR('HelloWorld', 'W') 6 LPAD(salary,10,'*') *****24000 RPAD(salary, 10, '*') 24000***** TRIM('H' FROM 'HelloWorld') elloWorld REPLACE('abcd','b','m') amcd 【3】 LPAD (右对齐)| RPAD (左对齐): TRIM : 清除字符串左右两端指定的字符 REPLACE : 替换字符串中指定的某个字符 SELECT CONCAT ('aaa','bbb','ccc')abc FROM DUAL SELECT CONCAT(first

SQL注入之宽字节注入

醉酒当歌 提交于 2019-12-02 05:28:36
SQL注入之宽字节注入 0x01简介 SQL注入近几年来连续被OWASP当作十大漏洞中最最危险的漏洞而存在。无论是从数据库中获得敏感信息还是执行一系列的恶意操作甚至是直接获取整个数据库权限,都可能发生在一次小小的提交参数的过程中。为此大多数网站开始对于SQL注入做了一定的防御方法,最早有人提出,将用户提交的所有敏感字符进行过滤和转义,要么将提交参数中的敏感字符过滤掉后再提交给数据库,要么对那些敏感字符使用转义符号进行转义,使其丧失掉注入功能后再进行提交。但我们知道,如果不对源头进行处理,再怎么亡羊补牢也是无济于事。后来这些网站在面对黑客那些令人匪夷所思的Bypass技巧面前根本没有应对方法,最终无奈选择关闭。 本篇文章,美创安全实验室将给大家介绍一种当年绕过转义防御最好用的技巧即宽字节注入攻击。 0x02编码历史 一听到“宽字节注入”,那不可避免地就要提到有关字节编码方面的知识,所以在讲解注入原理之前,我们简单讲解一下有关编码的历史。 最早美国人决定用8个可以开合的晶体管来组成不同的状态,这些晶体管只有“亮”或“不亮”两种形态,也就是对应了二进制的0和1。而1个字节有8个比特位,可以组合成2^8=256种不同的方案,他们把编号从0开始的32种状态用在规定的特殊用途,这32个字符后来成为“控制码”;他们又把所有的空格、标点符号、数字、大小写字母分别用连续的字节状态表示

MySql数据库基础

删除回忆录丶 提交于 2019-12-02 05:02:37
MySql数据库 """ 1、什么是数据库:管理数据的系统 - 安装某种管理数据的系统 - 管理的对象本质是文件 2、存储数据的位置:内存、硬盘 3、什么是系统:运行在硬件基础上,管理其他软件 """ # 数据库的组成 """ 库:存放多张表 - 文件夹 表:包含多条相同结构的记录 - 文件 记录:包含多个key-value键值对的一条数据 - 二进制数据 字段:描述信息 - 信息本身 == key-value - 二进制数据 stu id name age gender 1 Bob 18 男 2 Tom 17 女 ... teacher ... """ 数据库的分类 # 1)关系与非关系 # 关系:数据库中表与表之间有联系 - mysql # 非关系:没有表概念 - redis、mongodb(介于关系与非关系) # 2)内存与硬盘 # 硬盘:数据可以永久存储 - mysql、mongodb # 内存:数据的存取效率极高 - redis、memcache # 3)sql与nosql # sql:数据库操作通过sql语句 # nosql:数据库操作就是key-value形式(value就是一条记录) # stu - {'name': 'Bob', 'age': 18} # stus - [{'name': 'Bob', 'age': 18}, {'name': 'Tom',

Mysql字符串拼接、截取、替换

血红的双手。 提交于 2019-12-02 04:59:07
一. 字符串拼接 concat('asdf',str); 说明: 拼接asdf 和 str 二. 字符串截取 从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from tablename 从右开始截取字符串 right(str,length) 说明:right(被截取字段,截取长度) 例:select right(content,200) as abstract from tablename 按长度截取字符串 substring(str, pos) substring(str, pos, length) 说明:substring(被截取字段,从第几位开始截取) substring(被截取字段,从第几位开始截取,截取长度) 例: select substring(content,5) as abstract from tablename select substring(content,5,200) as abstract from tablename (注:如果位数是负数 如-5 则是从后倒数位数,到字符串结束或截取的长度) 按关键字截取字符串 substring_index(str,delim,count) 说明:substring_index(被截取字段

Mysql 批量杀死进程

做~自己de王妃 提交于 2019-12-02 04:53:53
Mysql 批量杀死进程 正常情况下kill id,即可,但是有时候某一异常连接特别多的时候如此操作会让人抓狂,下面记录下小方法: use information_schema; select concat('kill ',id,';') from processlist where host like '192.168.0.1%' into outfile '/tmp/kill.sql'; 函数 字段 ip地址 source /tmp/kill.sql 来源: https://www.cnblogs.com/wuhg/p/11730664.html

Mysql的ONLY_FULL_GROUP_BY

拟墨画扇 提交于 2019-12-02 03:51:48
  今天在测试环境遇到一个问题,本地测试是没有问题,在测试环境sql报错了: nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'dt.vDateTime' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by;   刚开始觉得很奇怪,本地测试的时候没有问题,为什么在测试环境就sql报错了,后来想到leader说过的sql严格模式。百度了一下报错信息,在这里纪录一下。   ONLY_FULL_GROUP_BY是MySQL提供的一个sql_mode,通过这个sql_mode来提供SQL语句GROUP BY合法性的检查,在MySQL的sql_mode没有ONLY_FULL_GROUP_BY语义时。一条select语句,MySQL允许target list中输出的表达式是除聚集函数或group by

SQLMap中tamper的简介

流过昼夜 提交于 2019-12-02 03:36:30
目录结构 一、SQLMap中tamper的简介 1.tamper的作用 2.tamper用法 二、适配不同数据库类型的测试tamper 三、SQLMap中tamper篡改脚本的功能解释 一、SQLMap中tamper的简介 1.tamper的作用 使用SQLMap提供的tamper脚本,可在一定程度上避开应用程序的敏感字符过滤、绕过WAF规则的阻挡,继而进行渗透攻击。 部分防护系统的缩写: WAF:Web应用程序防火墙,Web Application Firewall IPS:入侵防御系统, Intrusion Prevention System IDS:入侵检测系统,Intrusion Detection System 2.tamper用法 --tamper=TAMPER 利用给定的脚本进行篡改注入数据。其用法可举例说明: python sqlmap.py -u "http://.../?uname=admin&pwd=pass123" --level=5 --risk=3 -p "uname" --tamper=xxx.py 表示对指定的url地址,以所设置的level等级、risk等级,并采用选定的tamper篡改脚本对参数“uname”进行检测 二、适配不同数据库类型的测试tamper 当使用SQLMap篡改脚本执行渗透测试时,面对众多tamper可能会比较困惑

php.ini配置详解

给你一囗甜甜゛ 提交于 2019-12-02 02:39:43
本文采集来源:https://blog.csdn.net/chengxuyuanyonghu/article/details/51320794 [PHP] ; PHP还是一个不断发展的工具,其功能还在不断地删减 ; 而php.ini的设置更改可以反映出相当的变化, ; 在使用新的PHP版本前,研究一下php.ini会有好处的 ;;;;;;;;;;;;;;;;;;; ; 关于这个文件 ; ;;;;;;;;;;;;;;;;;;; ; 这个文件控制了PHP许多方面的观点。为了让PHP读取这个文件,它必须被命名为 ; 'php.ini'。PHP 将在这些地方依次查找该文件:当前工作目录;环境变量PHPRC ; 指明的路径;编译时指定的路径。 ; 在windows下,编译时的路径是Windows安装目录。 ; 在命令行模式下,php.ini的查找路径可以用 -c 参数替代。 ; 该文件的语法非常简单。空白字符和用分号';'开始的行被简单地忽略(就象你可能 ; 猜到的一样)。 章节标题(例如 : [Foo])也被简单地忽略,即使将来它们可能 ; 有某种的意义。 ; ; 指示被指定使用如下语法: ; 指示标识符 = 值 ; directive = value ; 指示标识符 是 *大小写敏感的* - foo=bar 不同于 FOO = bar。 ; ; 值可以是一个字符串,一个数字,一个 PHP

MySQL的COUNT函数

六月ゝ 毕业季﹏ 提交于 2019-12-02 02:06:22
COUNT()函数主要用于统计表行数,主要用法是COUNT( * )、COUNT(1)和COUNT(字段名)。 因为COUNT( * )是SQL92定义的标准统计行数的语法,所以MySQL对它进行了很多优化。 MyISAM不支持事务,MyISAM中的锁是表级锁InnoDB支持事务,支持行级锁。MyISAM表级锁,所以同张表上的操作是串行的,所以MyISAM做了个优化,把表的总行数单独记录下来供COUNT( * )查询[表级锁,不会有并发的数据库行数修改,得到的行数是准确的]。而InnoDB支持事务,其中大部分操作是行级锁,所以表的行数可能被并发修改,就不缓存记录总行数了而是扫表,InnoDB中索引分聚簇索引和非聚簇索引,聚簇索引的叶子节点中保存整行记录,而非聚簇索引的叶子节点保存的是该行记录的主键的值。扫表的时候选择最小的非聚簇索引。 当然,这些优化的前提是没有进行where和group的条件查询。 InnoDB中COUNT( *)和COUNT(1)实现上没有区别,而且效率一样。但是COUNT(字段名)需要进行全表扫描,然后进行字段非NULL判断,所以效率更低。 来源: https://www.cnblogs.com/qiaoqianshitou/p/11725135.html