• mysql备份并加密的脚本

    日期:2011-12-25 | 分类:Mysql数据库


    前不久CSDN 发生用户“帐号密码泄露”事件,如果他们09年的备份文件进行了加密,我想损失也不会这么惨重了。所以我们对数据库进行备份的时候,也需要对备份文件进行加密,以往万一。下面就是对mysql进行备份并进行加密的脚本。

    #!/bin/sh#mysqlback...

  • 查看Mysql数据库有多大

    日期:2011-11-29 | 分类:Mysql数据库

    方法一:SELECT table_schema AS 'DBname',
    Round( Sum( data_length + index_length ) / 1024 / 1024, 3 ) AS 'Db Size (MB)',
    Round( Sum( data_free ) / 1024 / 1024, 3 ) AS 'Free Space (MB)'
    FROM information_schema.tables GROUP BY table_schema ;...

  • MySQL数据库扩展

    日期:2011-11-21 | 分类:Mysql数据库

    很多大规模的站点基本上都经历了从简单主从复制到垂直分区,再到水平分区的步骤,这是一个必然的成长过程。 1 主从复制、读写分离(R/W Splitting) 将应用程序中对数据库的写操作指向主服务器,而将读操作指向从服务器。从服务器定时向主服务器请求最新日...
  • MySQL的show系列命令总结

    日期:2011-11-18 | 分类:Mysql数据库

     

    01、show tables或show tables from database_name; — 显示当前数据库中所有表的名称

    02、show databases; — 显示mysql中所有数据库的名称
    03、show columns from table_name from database_name; 或show columns from database_name.table_nam...
  • InnoDB 和 MyISAM 两者区别总结

    日期:2011-10-29 | 分类:Mysql数据库


    InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。一、InnoDB    InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))...
  • MongoDB2.0.0-RC0版本发布

    日期:2011-08-27 | 分类:Mysql数据库



    1.增加压缩命令
    以前只能通过repair整个数据库的方式来进行数据压缩,而2.0版本增加了一个 compact 命令,使你可以针对Collection和其索引进行压缩。

    2.并发增强
    当写操作不能在内存中完成(要写的部分未命中实际内存)时,需要加上写锁。(SERVER-2563)目...
  • Mysqlslap压力测试示例脚本

    日期:2011-05-24 | 分类:Mysql数据库

     

    #Mysqlslap压力测试  10个client  总100000个query请求 now()为取得当前时间戳。
    mysql>create database test_rp;
    创建一个表 see  两个字段,username(varchar)  date(datetime) 自带的ID为自增长
    #mysqlslap -h 192.168.1.151 -P 3306 -p'password' --create-schema=test_rp --query="insert into test_rp.see(username,date) values('www.ff-bb.cn',now())" --concurrency=10 --number-of-queries 100000 --debug-info -uroot
  • 转换Mysql的存储引擎

    日期:2011-05-14 | 分类:Mysql数据库

    转换Mysql文件的存储引擎,

    比如要将导出为InnoDB存储引擎的数据库sql文件导入为ndb存储引擎
    先将sql文件中的 ENGINE=InnoDB 替换为ENGINE=Ndb。如果是InnoDB转MyIsam 也类似

    [root@c3 bin]# perl -pli -e 's/ENGINE=InnoDB/ENGINE=Ndb/' "filename.sql"

    然后再执行 mysql>source filename.sql;

    方法二:如果之前已经导入MySQL sql而未更改数据表定义中的ENGINE= 子句,应在此时运行下述命令: world为数据库名

    mysql> USE world;

    mysql> ALTER TABLE City ENGINE=NDBCLUSTER;

    mysql> ALTER TABLE Country ENGINE=NDBCLUSTER;

    mysql> ALTER TABLE CountryLanguage ENGINE=NDBCLUSTER;

  • 开启Mysql远程访问,windows下,如果当时在安装mysql的时候没有启用可远程访问,现在需要启用。

    或者是在linux下安装好mysql之后需要启用可远程操作管理。操作如下,只有2步;

    1 修改my.conf
    bind-address    = 127.0.0.1
    注释掉,改为#bind-address    = 127.0.0.1

    2.用root登陆mysql执行如下命令
    grant all on *.* to sonar@'%' identified by 'password123456';
    grant all on *.* to sonar@localhost identified by 'passwor123456';

  • 解决Can't connect to MySQL server on 'localhost' (10048), 一般见于使用mysql的windows 2003服务器.

    c:>netstat -ano 可查看到 本机有不少端口连接到 mysql的 3308,状态都是LAST_ACK,所以导致discuz论坛 刷新会出现 不能连接数据库的报错。
      协议       本地地址                      外部地址                 状态         PID
      TCP    127.0.0.1:4994         127.0.0.1:3308         LAST_ACK  1400
      TCP    127.0.0.1:4996         127.0.0.1:3308         LAST_ACK  1400
      TCP    127.0.0.1:4999         127.0.0.1:3308         LAST_ACK  1400

    错误出现的原因:

    应用程序需要快速释放和创建新连接, 但是由于 TIME_WAIT 中存在的连接超过默认值,导致较低吞吐量.
    微软技术支持知识库中指出 :当您试图从大于 5000 的 TCP 端口连接时收到错误 http://support.microsoft.com/kb/q196271/
    我从本地端口可以看到 127.0.0.1:4999 已经到了5000

    解决方案:
    和本错误密切相关的两个windows的注册表项:TcpTimedWaitDelay和MaxUserPort的值.

    TcpTimedWaitDelay 确定 TCP/IP 可释放已关闭连接并重用其资源前, 必须经过的时间. 关闭和释放之间的此时间间隔通称

    TIME_WAIT 状态或两倍最大段生命周期(2MSL)状态. 此时间期间, 重新打开到客户机和服务器的连接的成本少于建立新连接. 减

    少此条目的值允许 TCP/IP 更快地释放已关闭的连接, 为新连接提供更多资源.

    MaxUserPort 确定从系统请求任何可用用户端口时所用最大端口数,TCP/IP 可指定的最高端口号. 如果建立 TCP 连接最大端口连

    接大于 5000, 本地计算机响应以下错误信息WSAENOBUFS (10055): 因为系统缺乏足够缓冲区或者因为队列已满而无法执行套接字

    上操作, 从而导致应用程序的10048错误.

    打开注册表编辑器regedit

    TcpTimedWaitDelay 设置:
    找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters 注册表子键
    并创建名为 TcpTimedWaitDelay 的新 REG_DWORD 值
    设置此值为十进制 30, 十六进制为 0x0000001e
    该值等待时间将是 30 秒。设置范围30-60秒
    本项的默认值:0xF0(16进制), 等待时间设置为 240 秒

    MaxUserPort 设置(增加最大值端口连接):
    找到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Services\TCPIP\Parameters 注册表子键
    并创建名为 MaxUserPort 的新 REG_DWORD 值
    设置到 65535
    该值等待时间将是前面所设置的 30 秒。本项的默认值:5000(十进制)
    关闭注册表编辑器, 在方便的时刻重启Windows系统。
    建议以上操作现在测试环境中测试之后再调整生产线上的服务器

    问题得到解决。这个是治标。

    如果要治本,还需要查看PID值,我这里出现状态为LAST_ACK 的PID值是1400,从任务管理器中可以看到这个PID对应的是tomcat6.exe,可见问题出在tomcat下某个程序。

  • SQL2005 使用SQL语句批量删除被注入的恶意代码的方法

    最近一朋友的网站访问时 360安全卫士提示有木马病毒,在google上搜索网站名称,也被冠以“该网站可能含有恶意软件,有可能会危害您的电脑。” 网站是IIs+ASP+sql server 2005

    打开杀毒软件,360,冒着风险访问这个网址,然后360报“来自h--p://boytimes..cn/s.js”木马病毒。

    然后查看网页源代码,发现有图片,有链接的地方都被插入了

    服务器上的ASP页面文件没有被修改的迹象,被修改时间也是正常的,服务器的资源也很正常,CPU  内存使用率都不高。查看了一下SQL数据库表中的数据,果然每个varchar类型的字段里都被插入了

    所以初期判断是数据库被注入了。

    启动【 SQL Server Management Studio 】 在做操作之前将数据库备份一下。如何备份sql2005的数据库,请google吧,不难。

    完整备份之后,新建一个查询,输入如下,用你数据库中有问题的部分替换掉有红色有下划线的部分,然后右击执行。

    declare @t varchar(255),@c varchar(255) 
    declare table_cursor cursor for select a.name,b.name  
    from sysobjects a,syscolumns b ,systypes c  
    where a.id=b.id and a.xtype='u' and c.name  
    in ('char', 'nchar', 'nvarchar', 'varchar','text','ntext') 
    declare @str varchar(500),@str2 varchar(500)  
    set @str=' '/*要替换的内容放在引号里*/ 
    set @str2=''
    open table_cursor  
    fetch next from table_cursor  
    into @t,@c while(@@fetch_status=0)  
    begin exec('update [' + @t + '] set [' + @c + ']=replace(cast([' + @c + '] as varchar(8000)),'''+@str+''','''+ @str2 +''')') 
    fetch next from table_cursor  
    into @t,@c end close table_cursor deallocate table_cursor;

    然后再查看数据库的表里的内容是不是正常了。

    当然这个方法只是治标治不了本,下次还是会被注入,要根治的办法还是得修改程序漏洞。


  • 在还原备份数据库的时候,遇到一个问题。

    原来的服务器环境使用的windows,然后使用mysqldump备份出来的数据库怎么也不能在linux下的数据库中导入。导入的时候总是出现:

    unknown command ‘\”‘

    于是将 \’ 全部替换成 ‘  结果...

  • 很多朋友只用了Oracle的删除,但很多情况下,他会发现重新安装时,点了下一步安装界面就消失了,往往无奈下只好重装系统,其实只是你数据库没删干净,删干净就不会出现这种情况了。

    实现方法:

    1、 开始->设置->控制面板->管理工具->服务 停止所有Oracle服务。

    2、 开始->程序->Oracle - OraHome81->Oracle Installation Products-> Universal...

  • 在SqlServer 2005 导入已有的数据库方法罗列 1  在SqlServer 2005 导入已有的数据库(*.mdf)文件 在SQL Server Management Studio里连接上数据库后,选择新建查询,然后执行语句
       EXEC sp_attach_db @dbname = N'Sql2005DB',
        @filename1 = N'D:\Sql2000DB.mdf', ...

  • 让MySQL不区分大小写

    日期:2009-12-22 | 分类:Mysql数据库

    部署系统的时候,从windows下导出mysql为sql语句,导入到Linux下的mysql,导入顺利,启动工程发现报错,日志里提示看到 找不到 SiteAdmin 但是我的数据库里面明明都是小写,怎么一到Linux里面来就有大小的了呢。后来一查,原来是Linux下mysql对数据库大小写敏感,修改如下:

    unix/linux的文件系统是区分大小写,mysql将数据库表用文件来表示,因此对运行于unix/linux系统中的mysql数据库进行查询 时,SQL语句中的表名大写小敏感的。而windows则大小写不敏感,为了兼容两个系统,我们可以建立全部小写的数据库表名,

    lower_case_table_names=1 让MySQL不区分大小写

    在CentOS安装的MySQL的配置文件中(/etc/my.cnf),是没有lower_case_table_names=1这行的。
    在Windows安装的MySQL的配置文件中(my.ini),是有lower_case_table_names=1这行的。

    lower_case_table_names=1的用途是让MySQL实现不区分大小写。

    所以当时出了些毛病,后来才发现是这个的问题。连忙在CentOS中的my.cnf(/etc/my.cnf)的[mysqld]区段下增加:
    lower_case_table_names=1

    也有从Linux下倒出来到windows中都是大写的情况,同样,在windows配置下填写lower_case_table_names=0即可。