mysql数据库

MySQL---二进制日志

泄露秘密 提交于 2020-02-18 06:42:37
mysql---二进制日志 记录了所有对MySQL数据库的修改事件,包括增删改查事件和对表结构的修改事件 二进制日志的开启 #是否启用了日志 mysql> show variables like 'log_bin'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | log_bin | OFF | +---------------+-------+ [mysqld] log-bin [=DIR \ [filename]] log_bin=mysql-bin 名字可以随便起(mysql-bin) 格式 binlog_format={STATEMENT|ROW|MIXED} 语句(statement):默认的记录格式,基于段 行(row):定义的并非数据本身而是这一行的数据是什么 混合模式(mixed):交替使用行和语句、由mysql服务器自行判断 基于段的日志格式 优点 日志记录量相对较小,节约磁盘及网络IO 只对一条记录修改或者插入,row格式所产生的日志量小于段产生的日志量 缺点 必须要记录上下文信息,保证语句在从服务器上执行结果与主服务器相同 特定函数如UUID(),user()这样非确定性函数还是无法复制;可能造成MySQL复制的主备服务器数据不一致 操作 mysql

C#数据库连接池 MySql SqlServer

浪子不回头ぞ 提交于 2020-02-18 04:11:52
查阅了一天的资料来学习MySql数据库连接池,终于在一篇博文上找到了,自己也整理了一下,希望对大家有用处 1. 建立连接池 1 using MySql.Data.MySqlClient; 2 using System; 3 using System.Collections; 4 using System.Collections.Generic; 5 using System.Linq; 6 using System.Text; 7 using System.Threading.Tasks; 8 9 namespace LianJieChiTest 10 { 11 public class ConnectionPool 12 { 13 private static ConnectionPool cpool = null;//池管理对象 14 private static Object objlock = typeof(ConnectionPool);//池管理对象实例 15 private int size = 1;//池中连接数 16 private int useCount = 0;//已经使用的连接数 17 private ArrayList pool = null;//连接保存的集合 18 private String ConnectionStr = "";//连接字符串

sqli-宽字节注入

*爱你&永不变心* 提交于 2020-02-18 00:03:15
0x0 背景 当某字符的大小为一个字节时,称其字符为窄字节. 当某字符的大小为两个字节时,称其字符为宽字节. 所有英文默认占一个字节,汉字占两个字节 常见的宽字节编码:GB2312,GBK,GB18030,BIG5,Shift_JIS等等 0x1 宽字节注入原理 程序员为了防止sql注入,对用户输入中的单引号(’)进行处理,在单引号前加上斜杠(\)进行转义,这样被处理后的sql语句中,单引号不再具有‘作用’,仅仅是‘内容’而已,换句话说,这个单引号无法发挥和前后单引号闭合的作用,仅仅成为‘内容‘ 【再举个例子,要找某位名字里带单引号的用户,搜索的时候,就要让单引号成为内容去搜索,而不能起到其他作用】 而安全测试人员要绕过这个转义处理,使单引号发挥作用,有两个思路: 让斜杠(\)失去作用 让斜杠(\)消失 第一个思路就是借鉴程序员的防范思路,对斜杠(\)转义,使其失去转义单引号的作用,成为‘内容’ 第二个思路就是宽字节注入 当使用宽字节编码,如:GBK时,两个连在一起的字符会被认为是汉字,我们可以在单引号前加一个字符,使其和斜杠(\)组合被认为成汉字,从未达到让斜杠消失的目的,进而使单引号发挥作用 注意:前一个字符的Ascii要大于128,两个字符才能组合成汉字 0x2 注入方法 0x21 黑盒 可以看到,在发现单引号被转义后,当我们加了%df后,sql语句报错,说明单引号发挥了作用

Node连接MySQL报错ER_NOT_SUPPORTED_AUTH_MODEError

谁说我不能喝 提交于 2020-02-17 18:41:51
在Node服务中连接mysql数据库,启动服务时报错: nodejs. ER_NOT_SUPPORTED_AUTH_MODEError : ER_NOT_SUPPORTED_AUTH_MODE : Client does not support authentication protocol requested by server 报错原因 : 我本地安装的mysql版本是8.0,默认的加密方式是caching_sha2_password,而这种加密方式是node-mysql(我在项目中使用的是egg-mysql)这类模块的较多版本中尚未支持的,因此提示客户端尚不支持服务所需的认证协议。 解决方案 : 修改本地mysql数据库登录使用的加密协议即可。可视化界面或命令行操作修改密码的加密方式。 命令行操作语句为: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '您的新密码'; ( 注意 ,命令行中分号或\g才表示sql语句的结束,直接换行并不会执行sql语句) 执行成功后重新启动node服务即可发现报错消失。 参考链接 : https://blog.csdn.net/kkkloveyou/article/details/91623834 来源: CSDN 作者: GY_Grace 链接:

MySQL触发器简介

北城余情 提交于 2020-02-17 14:22:08
MySQL 数据库中触发器是一个特殊的存储过程,不同的是执行存储过程要使用 CALL 语句来调用,而触发器的执行不需要使用 CALL 语句来调用,也不需要手工启动,只要一个预定义的事件发生就会被 MySQL自动调用。 引发触发器执行的事件一般如下: 增加一条学生记录时,会自动检查年龄是否符合范围要求。 每当删除一条学生信息时,自动删除其成绩表上的对应记录。 每当删除一条数据时,在数据库存档表中保留一个备份副本。 触发程序的优点如下: 触发程序的执行是自动的,当对触发程序相关表的数据做出相应的修改后立即执行。 触发程序可以通过数据库中相关的表层叠修改另外的表。 触发程序可以实施比 FOREIGN KEY 约束、CHECK 约束更为复杂的检查和操作。 触发器与表关系密切,主要用于保护表中的数据。特别是当有多个表具有一定的相互联系的时候,触发器能够让不同的表保持数据的一致性。 在 MySQL 中,只有执行 INSERT、UPDATE 和 DELETE 操作时才能激活触发器。 在实际使用中,MySQL 所支持的触发器有三种:INSERT 触发器、UPDATE 触发器和 DELETE 触发器。 1) INSERT 触发器 在 INSERT 语句执行之前或之后响应的触发器。 使用 INSERT 触发器需要注意以下几点: 在 INSERT 触发器代码内,可引用一个名为 NEW(不区分大小写

PowerDesigner16 连接MySql 报错

空扰寡人 提交于 2020-02-17 14:09:28
原文链接: https://www.cnblogs.com/smiledragon/p/10905556.html 原因:由于PowerDesigner是32位的,而一般windows系统都是64位了,装的对应64位JDK,而该软件需要32位的JDK下运行 解决方式:下载32位JDK,配置环境变量 步骤: 1、下载32位JDK 2、配置环境变量(JAVA_HOME和数据库驱动包全路径) JAVA_HOME:D:\java\jdk\jdk1.8.0_111(x86) PATH:%JAVA_HOME%\bin;D:\java\jdk\jdk1.8.0_111(x86)\bin\mysql-connector-java-5.1.20.jar 3、配置PowerDesigner PowerDesigner 点击 Tools --> General Options --> Variables: JAR D:\java\jdk\jdk1.8.0_111(x86)\bin\jar.exe JAVA D:\java\jdk\jdk1.8.0_111(x86)\bin\java.exe JAVAC D:\java\jdk\jdk1.8.0_111(x86)\bin\ avac.exe JAVADOC D:\java\jdk\jdk1.8.0_111(x86)\bin\ javadoc.exe 4

PowerDesigner16 连接MySql 报错

女生的网名这么多〃 提交于 2020-02-17 14:05:43
原因:由于PowerDesigner是32位的,而一般windows系统都是64位了,装的对应64位JDK,而该软件需要32位的JDK下运行 解决方式:下载32位JDK,配置环境变量 步骤: 1、下载32位JDK 2、配置环境变量(JAVA_HOME和数据库驱动包全路径) JAVA_HOME:D:\java\jdk\jdk1.8.0_111(x86) PATH:%JAVA_HOME%\bin;D:\java\jdk\jdk1.8.0_111(x86)\bin\mysql-connector-java-5.1.20.jar 3、配置PowerDesigner PowerDesigner 点击 Tools --> General Options --> Variables: JAR D:\java\jdk\jdk1.8.0_111(x86)\bin\jar.exe JAVA D:\java\jdk\jdk1.8.0_111(x86)\bin\java.exe JAVAC D:\java\jdk\jdk1.8.0_111(x86)\bin\ avac.exe JAVADOC D:\java\jdk\jdk1.8.0_111(x86)\bin\ javadoc.exe 4、连接数据库 工具栏DataBase ---> Conection ---> Conection Profile ---

window 下如何恢复被删除的mysql root账户及密码(mysql 8.0.17)

五迷三道 提交于 2020-02-17 09:43:09
不久前自学完完sql,下了mysql8.0.17,安装配置好后探索着,想着用root账户登上去能不能删除root账户呢,然后就想给自己一巴掌,,, 如何快速恢复root: 1.关闭mysql服务:win+R键键入 services.msc ,找到mysql服务,点击stop; 2.删除data文件夹及其文件:进入mysql文件夹,找到 data 文件夹并删除; 3.初始化mysql:再次进入services.msc,运行mysql服务;cmd窗口进入 mysql\bin 文件路径,运行 mysqld --initialize --console 结果类似如下: 2019-08-07T02:08:11.300849Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see doc umentation for more details). 2019-08-07T02:08:11.724874Z 0 [Warning] InnoDB: New log files created, LSN=45790 2019-08-07T02:08:12.024891Z 0 [Warning]

MySQL

烈酒焚心 提交于 2020-02-17 09:34:30
MySQL 分页查询: LIMIT基本实现方式 分页查询其实就是限制输出和跳过输出的结合 SELECT * FROM table LIMIT M OFFSET N ,其中 LIMIT M OFFSET N 可以写成 LIMIT N, M eg. mysql> select * from news limit 490000,10 其实关于实现MySQL分页的最简单的方法用利用mysql数据库的LIMIT函数,LIMIT [offset,] rows可以从MySQL数据库表中第M条记录开始检索N条录的语句为: SELECT * FROM [TABLE_NAME] LIMIT M,N 例如从表Sys_option(主键为sys_id) 中从第10条记录开始检索20条记录,语句如下: mysql> select * from sys_option limit 10, 20 一般情况下,客户端通过传递 pageNo(页码)、pageSize(每页条数)两个参数去分页查询数据库中的数据,在数据量较小(元组百/千级)时使用 MySQL自带的 limit 来解决这个问题。 建立主键或者唯一索引 假设主键或者唯一索引为 good_id 收到客户端{pageNo:5,pagesize:10} select * from table where good_id > (pageNo-1)*pageSize

linux:Ubuntu14.04安装MySql和本地Windows Navicat for MySql远程连接MySql

霸气de小男生 提交于 2020-02-17 08:59:24
一、Ubuntu14.04安装MySql数据库 1.打开终端,输入: sudo apt-get updata 输入root用户密码 2.更新完毕后,输入: sudo apt-get install mysql-server 安装期间会要求输入两次密码,每次输入完成后按Enter回车确认,如下图: 安装完成后,自动启动MySql,终端会显示,如果没有自动启动,则手动启动MySql命令:sudo service mysql start 3.安装结束后,查看端口号是否开启: 查看方法多种,MySql默认端口3306,一般不需要修改,若显示监听(LINSTEN),表示安装成功: netstat -tan | grep 3306 netstat -tap | grep mysql /* 如果没有监听(LISTEN)成功,则使用该命令检查是否安装成功 */ ps aux|grep mysql 二、MySql远程登陆配置 1.修改配置文件,允许远程用户登录本机数据库 sudo vim /etc/mysql/my.cnf 找到:bind-address = 127.0.0.1 并注释或者修改为:bind-address = 0.0.0.0 我的linux版本是Ubuntu14.04 可能有些版本是在这个目录:/etc/mysql/mysql.conf.d/mysqld.cnf 总之要找到:bind