删除表后,自动更新ID
[ 2009/06/03 17:09 | by selboo ]
删除自动ID(auto_increment)表下的内容,会出现ID空档.
例如删除ID=6 ID=7
1 2 3 4 5 8....
这样ID就从8开始记录.
这样需要1个方法让他从6来继续
执行sql语句.
ALTER TABLE `表` AUTO_INCREMENT = 6
例如删除ID=6 ID=7
1 2 3 4 5 8....
这样ID就从8开始记录.
这样需要1个方法让他从6来继续
执行sql语句.
ALTER TABLE `表` AUTO_INCREMENT = 6
Mysql 数据引擎转换
[ 2009/05/20 10:21 | by selboo ]
从MySQL 5.x起,MySQL已经自带一个PERL工具。此工具可以批量转换MYSQL的表的引擎,这个工具对于批量转换表的朋友就比较好用啦,工具为mysql_convert_table_format,如果是RPM安装一般在/usr/bin 或者/usr/sbin下。源码安装的朋友可能就在你自己定义的目录—basedir/bin下。我的为/usr/local/mysql/bin,其实mysql_convert_table_format的帮助文件已经非常详细啦!方便自己,也给象我一样比较懒的人啰,就当把帮助文档翻译一下啰,本人英文水平还处在小学水平,欢迎拍砖
[root@test ~]# mysql_convert_table_format
/usr/sbin/mysql_convert_table_format
version 1.1
Conversion of a MySQL tables to other table types.
转换MYSQL 表成其它表的类型
如:INNODB ,MEMORY等
l
Usage: /usr/sbin/mysql_convert_table_format database [tables]
用法: /usr/sbin/mysql_convert_table_format 数据库名
表名,也就是可以单独指定全库,或者全表,类似mysqldump
If no tables has been specifed, all tables in the database will be converted.
如果没指定表,那么数据库中的所有表将会被转换
The following options are available:
–force
Continue even if there is some error.
如果碰到错误强制进行转换
–help or –Information
Shows this help
查看帮助
–host=’host name’ (Default localhost)
Host name where the database server is located.
转换的主机名,默认为本地主机(localhost)
–password=’password’
Password for the current user.
当前进行转换用户的密码
–port=port
TCP/IP port to connect to if host is not “localhost”.
如果不是以localhost 连接的话,请指定端口
–socket=’/path/to/socket’
Socket to connect with.
SOCKET文件存在的位置(SOCKET是进程间通信所用到的)
–ENGINE=’table-type’
Converts tables to the given table type (Default: myisam)
MySQL 3.23 supports at least the BDB, ISAM and MYISAM types.
存储引擎,默认为MYISAM,这里要注意,我测试的时候,要修改这个PERL脚本,如果你把库转成INNODB,就在脚本里把MYISAM写成INNODB,其它类同,我也不清楚用这个参数指定为什么不行,本人对PERL也就能看懂一些,没学过程序开发,也没做过程序员,水平也不怎么样!所以,如果谁有更好的方法,或者改良一下这个脚本应该是可以的。
–user=’user_name’
User name to log into the SQL server.
连接的用户名
–verbose
This is a test specific option that is only used when debugging a test.
Print more information about what is going on.
–version
Shows the version of this program.
查看工具的版本信息
用法:我是用本机进行测试,OS:RHEL5.2 MYSQL:5.1.30
mysql_convert_table_format mo –user=’root’ –password=’mysql’ –force –socket=’/tmp/mysql.sock’
把数据库mo中的所有表转换成MYISAM引擎
查看数据文件目录
[root@test ~]# ll /opt/mysql-data/mo/
总计 960
-rw-rw—- 1 mysql mysql 12914 03-02 22:55 action_log.frm
-rw-rw—- 1 mysql mysql
8900 03-02 22:55 alarm_log.frm
-rw-rw—- 1 mysql mysql
8898 03-02 22:55 check_data.frm
-rw-rw—- 1 mysql mysql
8836 03-02 22:55 check_data_log.frm
-rw-rw—- 1 mysql mysql
1708 03-02 22:55 check_data_log.par
-rw-rw—- 1 mysql mysql
8898 03-02 22:55 check_data_tmp.frm
-rw-rw—- 1 mysql mysql
9096 03-02 22:55 checkpoint.frm
…………………………………….
只有表的结构文件,看看表空间有没有增长啰
[root@test ~]# ll -lh /opt/mysql-data/ib*
-rw-rw—- 1 mysql mysql
34M 03-02 23:18 /opt/mysql-data/ibdata1
-rw-rw—- 1 mysql mysql 5.0M 03-02 23:18 /opt/mysql-data/ib_logfile0
-rw-rw—- 1 mysql mysql 5.0M 12-22 20:19 /opt/mysql-data/ib_logfile1
默认没有用INNODB的是10M,现在我的变成30多M啦
修改工具
把MYISAM修改成INNODB
Vi /usr/local/mysql/bin/mysql_convert_table_format
把第26行 $opt_type=”innodb” 改成$opt_type=”myisam”
用工具进行库的转换
[root@test ~]# mysql_convert_table_format mo –user=’root’ –password=’mysql’ –socket=’/tmp/mysql.sock’
[root@test ~]#
成功完成。。在看看数据文件啰
总计 2568
-rw-rw—- 1 mysql mysql 12914 03-02 23:18 action_log.frm
-rw-rw—- 1 mysql mysql
0 03-02 23:18 action_log.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 action_log.MYI
-rw-rw—- 1 mysql mysql
8900 03-02 23:18 alarm_log.frm
-rw-rw—- 1 mysql mysql
0 03-02 23:18 alarm_log.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 alarm_log.MYI
-rw-rw—- 1 mysql mysql
8898 03-02 23:18 check_data.frm
-rw-rw—- 1 mysql mysql
8836 03-02 23:18 check_data_log.frm
-rw-rw—- 1 mysql mysql
1708 03-02 23:18 check_data_log.par
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p0.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p0.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p100.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p100.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p101.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p101.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p102.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p102.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p103.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p103.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p104.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p104.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p105.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p105.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p106.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p106.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p107.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p107.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p108.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p108.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p109.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p109.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p10.MYD
已经成功转换成MYISAM引擎啰
验证数据的正确性我就不贴出来了,我已经验证过了,不会有数据的丢失,其实脚本也就是批量执行
ALTER TABLE $TABLE_NAME ENGINE=$ENGINE
的动作
[root@test ~]# mysql_convert_table_format
/usr/sbin/mysql_convert_table_format
version 1.1
Conversion of a MySQL tables to other table types.
转换MYSQL 表成其它表的类型
如:INNODB ,MEMORY等
l
Usage: /usr/sbin/mysql_convert_table_format database [tables]
用法: /usr/sbin/mysql_convert_table_format 数据库名
表名,也就是可以单独指定全库,或者全表,类似mysqldump
If no tables has been specifed, all tables in the database will be converted.
如果没指定表,那么数据库中的所有表将会被转换
The following options are available:
–force
Continue even if there is some error.
如果碰到错误强制进行转换
–help or –Information
Shows this help
查看帮助
–host=’host name’ (Default localhost)
Host name where the database server is located.
转换的主机名,默认为本地主机(localhost)
–password=’password’
Password for the current user.
当前进行转换用户的密码
–port=port
TCP/IP port to connect to if host is not “localhost”.
如果不是以localhost 连接的话,请指定端口
–socket=’/path/to/socket’
Socket to connect with.
SOCKET文件存在的位置(SOCKET是进程间通信所用到的)
–ENGINE=’table-type’
Converts tables to the given table type (Default: myisam)
MySQL 3.23 supports at least the BDB, ISAM and MYISAM types.
存储引擎,默认为MYISAM,这里要注意,我测试的时候,要修改这个PERL脚本,如果你把库转成INNODB,就在脚本里把MYISAM写成INNODB,其它类同,我也不清楚用这个参数指定为什么不行,本人对PERL也就能看懂一些,没学过程序开发,也没做过程序员,水平也不怎么样!所以,如果谁有更好的方法,或者改良一下这个脚本应该是可以的。
–user=’user_name’
User name to log into the SQL server.
连接的用户名
–verbose
This is a test specific option that is only used when debugging a test.
Print more information about what is going on.
–version
Shows the version of this program.
查看工具的版本信息
用法:我是用本机进行测试,OS:RHEL5.2 MYSQL:5.1.30
mysql_convert_table_format mo –user=’root’ –password=’mysql’ –force –socket=’/tmp/mysql.sock’
把数据库mo中的所有表转换成MYISAM引擎
查看数据文件目录
[root@test ~]# ll /opt/mysql-data/mo/
总计 960
-rw-rw—- 1 mysql mysql 12914 03-02 22:55 action_log.frm
-rw-rw—- 1 mysql mysql
8900 03-02 22:55 alarm_log.frm
-rw-rw—- 1 mysql mysql
8898 03-02 22:55 check_data.frm
-rw-rw—- 1 mysql mysql
8836 03-02 22:55 check_data_log.frm
-rw-rw—- 1 mysql mysql
1708 03-02 22:55 check_data_log.par
-rw-rw—- 1 mysql mysql
8898 03-02 22:55 check_data_tmp.frm
-rw-rw—- 1 mysql mysql
9096 03-02 22:55 checkpoint.frm
…………………………………….
只有表的结构文件,看看表空间有没有增长啰
[root@test ~]# ll -lh /opt/mysql-data/ib*
-rw-rw—- 1 mysql mysql
34M 03-02 23:18 /opt/mysql-data/ibdata1
-rw-rw—- 1 mysql mysql 5.0M 03-02 23:18 /opt/mysql-data/ib_logfile0
-rw-rw—- 1 mysql mysql 5.0M 12-22 20:19 /opt/mysql-data/ib_logfile1
默认没有用INNODB的是10M,现在我的变成30多M啦
修改工具
把MYISAM修改成INNODB
Vi /usr/local/mysql/bin/mysql_convert_table_format
把第26行 $opt_type=”innodb” 改成$opt_type=”myisam”
用工具进行库的转换
[root@test ~]# mysql_convert_table_format mo –user=’root’ –password=’mysql’ –socket=’/tmp/mysql.sock’
[root@test ~]#
成功完成。。在看看数据文件啰
总计 2568
-rw-rw—- 1 mysql mysql 12914 03-02 23:18 action_log.frm
-rw-rw—- 1 mysql mysql
0 03-02 23:18 action_log.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 action_log.MYI
-rw-rw—- 1 mysql mysql
8900 03-02 23:18 alarm_log.frm
-rw-rw—- 1 mysql mysql
0 03-02 23:18 alarm_log.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 alarm_log.MYI
-rw-rw—- 1 mysql mysql
8898 03-02 23:18 check_data.frm
-rw-rw—- 1 mysql mysql
8836 03-02 23:18 check_data_log.frm
-rw-rw—- 1 mysql mysql
1708 03-02 23:18 check_data_log.par
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p0.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p0.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p100.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p100.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p101.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p101.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p102.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p102.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p103.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p103.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p104.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p104.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p105.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p105.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p106.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p106.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p107.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p107.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p108.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p108.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p109.MYD
-rw-rw—- 1 mysql mysql
1024 03-02 23:18 check_data_log#P#p109.MYI
-rw-rw—- 1 mysql mysql
0 03-02 23:18 check_data_log#P#p10.MYD
已经成功转换成MYISAM引擎啰
验证数据的正确性我就不贴出来了,我已经验证过了,不会有数据的丢失,其实脚本也就是批量执行
ALTER TABLE $TABLE_NAME ENGINE=$ENGINE
的动作
一个很有意义的SQL的优化过程
[ 2009/04/02 23:10 | by selboo ]
优化前
[codes=sql]select count(distinct v_yjhm)
from (select v_yjhm
from zjjk_t_yssj_o_his a
where n_yjzl > 0
and d_sjrq between to_date('20070301', 'yyyymmdd') and
to_date('20070401
[codes=sql]select count(distinct v_yjhm)
from (select v_yjhm
from zjjk_t_yssj_o_his a
where n_yjzl > 0
and d_sjrq between to_date('20070301', 'yyyymmdd') and
to_date('20070401
oracle 更改密码
[ 2009/02/22 23:32 | by selboo ]
修改密码方法:
1.SQL>; grant connect to USRNAME identified by USRPWD ;
2.SQL>; alter user USRNAME identified by USRPWD ;
3.SQL>; password USRNAME ;更改 USRNMAE 的口令旧口令:××××××新口令:××××××重新键入新口令:××××××
1.SQL>; grant connect to USRNAME identified by USRPWD ;
2.SQL>; alter user USRNAME identified by USRPWD ;
3.SQL>; password USRNAME ;更改 USRNMAE 的口令旧口令:××××××新口令:××××××重新键入新口令:××××××
SQL数据库挂马解决方案
[ 2008/07/02 09:25 | by selboo ]
来源:安全中国
今天接到田总的求助电话,火速赶回寝室上服务器查看情况,原来是一个网站被入侵了,破坏相当严重,sql数据库被挂马,所有的表里面大部分字段都被多次重复插入挂马代码,查看日志,还好没有涉及到服务器的安全,只是数据库那里出现了很多异常警告而已,网站确实存在漏洞
没有办法,我只得修复数据库,因为他们没有数据库备份,根本就没有办法还原数据库啊,何况连事务日志都没有开启,试着恢复了几次都不成功,恢复数据库没有一点希望,我只得乖乖的帮他们清理挂马代码,不可能手工删除挂马代码,毕竟数据太大了,不可能去直接修改,通过四处搜寻得到了一个勉强有效的解决办法,每个表里面去执行一下这个sql语句
update tablename set @ziduanming =replace(cast(@ziduanming as varchar(8000)),’ ’,null)
上面的sql语句可以对应修改表,字段名,和替换内容
其实,sql数据库挂马是一种较新的挂马方法,只要网站存在注入,并且连接数据库是db owner权限就可以进行数据库挂马,估计这次攻击的流程应该是自动化的,通过先进的扫描技术批量收集到几万网站的SQL注入漏洞,针对漏洞攻击,进行自动化的SQL注入挂马。这次应该有很多网站遭殃了,asp+mssql的是主要被攻击对象!
本人给出解决方案
sql数据库挂马的解决办法:
正确清理木马,注意数据库不能随便修改或删除,被挂上马后,更需要谨慎的操作。建议,先备份然后再小心清理。
如果以前没有备份的话,就利用我上面的sql命令进行修复,
如何预防sql数据库挂马:
1、清理网站上所有注入点。
2、为网站配置可靠的防注入程序。
3、最好在网站源码中做好过滤,在数据库中限制字符的类型和长度。
4、养成经常备份数据库的习惯。大家可能无法保证天天备份数据库,但也会保证每周备份一次,如果有时间保证天天备份数据库。
5、最好是请专业的网站安全公司,对您的站和服务器做彻底的安全评估。
今天接到田总的求助电话,火速赶回寝室上服务器查看情况,原来是一个网站被入侵了,破坏相当严重,sql数据库被挂马,所有的表里面大部分字段都被多次重复插入挂马代码,查看日志,还好没有涉及到服务器的安全,只是数据库那里出现了很多异常警告而已,网站确实存在漏洞
没有办法,我只得修复数据库,因为他们没有数据库备份,根本就没有办法还原数据库啊,何况连事务日志都没有开启,试着恢复了几次都不成功,恢复数据库没有一点希望,我只得乖乖的帮他们清理挂马代码,不可能手工删除挂马代码,毕竟数据太大了,不可能去直接修改,通过四处搜寻得到了一个勉强有效的解决办法,每个表里面去执行一下这个sql语句
update tablename set @ziduanming =replace(cast(@ziduanming as varchar(8000)),’ ’,null)
上面的sql语句可以对应修改表,字段名,和替换内容
其实,sql数据库挂马是一种较新的挂马方法,只要网站存在注入,并且连接数据库是db owner权限就可以进行数据库挂马,估计这次攻击的流程应该是自动化的,通过先进的扫描技术批量收集到几万网站的SQL注入漏洞,针对漏洞攻击,进行自动化的SQL注入挂马。这次应该有很多网站遭殃了,asp+mssql的是主要被攻击对象!
本人给出解决方案
sql数据库挂马的解决办法:
正确清理木马,注意数据库不能随便修改或删除,被挂上马后,更需要谨慎的操作。建议,先备份然后再小心清理。
如果以前没有备份的话,就利用我上面的sql命令进行修复,
如何预防sql数据库挂马:
1、清理网站上所有注入点。
2、为网站配置可靠的防注入程序。
3、最好在网站源码中做好过滤,在数据库中限制字符的类型和长度。
4、养成经常备份数据库的习惯。大家可能无法保证天天备份数据库,但也会保证每周备份一次,如果有时间保证天天备份数据库。
5、最好是请专业的网站安全公司,对您的站和服务器做彻底的安全评估。