<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>月影鹏鹏 &#187; databases</title>
	<atom:link href="http://jk.scanmon.com/wp/category/it-technology/databases/feed" rel="self" type="application/rss+xml" />
	<link>http://jk.scanmon.com</link>
	<description>不断探索,追求卓越,成为出色的系统管理员!</description>
	<lastBuildDate>Wed, 28 Jul 2010 02:45:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>sql-server 日志截断问题</title>
		<link>http://jk.scanmon.com/wp/sql-server-log-shrink.html</link>
		<comments>http://jk.scanmon.com/wp/sql-server-log-shrink.html#comments</comments>
		<pubDate>Fri, 21 May 2010 01:40:02 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>
		<category><![CDATA[question (问题)]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=2506</guid>
		<description><![CDATA[ScanMon 鹏鹏工作室在近日维护一个sql-server数据库的又遇到了sql-server 的数据库日志不断增大最后把数据库存放的硬盘装满的问题，这次收缩一个22G大小的日志用时19分钟，鹏鹏工作室强烈sql-server的数据库管理员要注意数据库文件和日志文件的大小，避免产生超大的问题。
ScanMon在这里提醒大家的数据库的日志文件不可以直接删除，直接删除的后果是数据库无法启动！

A方法收缩整个数据库，在企业管理器里面操作的方法：
1、打开企业管理器
2、打开要处理的数据库
3、点击最上面菜单&#62;工具&#62;SQL查询 分析器，打开SQL查询分析器
4、在输入窗口里面输入:
Code:
DUMP TRANSACTION [数据库名] WITH  NO_LOG
BACKUP LOG [数据库名]  WITH NO_LOG
DBCC SHRINKDATABASE([数据库名])
具体实例例
比如收缩一个名为ScanMon的数据库
DUMP TRANSACTION [ ScanMon ] WITH  NO_LOG
BACKUP LOG [ ScanMon ]  WITH NO_LOG
DBCC  SHRINKDATABASE(ScanMon])
B方法 
还有一种方法根据这篇文章的方法如下  http://jk.scanmon.com/wp/sql-server-log-shrink.html
ScanMon 常使用的收缩日志问题方法：
&#8211;sql-server 2000 清空日志的方法&#8211;
&#8211;清空scanmon日志
DUMP TRANSACTION scanmon WITH NO_LOG
&#8211;截断  scanmon事务日志
BACKUP LOG scanmon WITH NO_LOG
select * from sysfiles
&#8211;收缩指定数据文件,2 是文件号,可以通过这个语句查询到:select * from sysfiles
DBCC SHRINKFILE( 2,200)
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
ScanMon补充说明：
DBCC SHRINKFILE 命令压缩当前数据库中的文件。其语法如下：
DBCC SHRINKFILE [...]]]></description>
		<wfw:commentRss>http://jk.scanmon.com/wp/sql-server-log-shrink.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL慢查询分析mysqldumpslow</title>
		<link>http://jk.scanmon.com/wp/mysql-mysqldumpslow.html</link>
		<comments>http://jk.scanmon.com/wp/mysql-mysqldumpslow.html#comments</comments>
		<pubDate>Wed, 07 Apr 2010 03:19:51 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=2257</guid>
		<description><![CDATA[一直以来积累了很多对MySQL优化的心得和经验，计划通过写日志的方式一步一步写出来分享给大家。
MySQL优化的第一步应该做的就是排查问题，找出瓶颈，而通常情况下的瓶颈和问题都需要通过观察MySQL的运行情况来进行分析，《查看MySQL运行状况》这篇文章罗列了一些常用的查看 MySQL运行信息的方式。
而对于大多数的程序员来说，最容易发现并解决的问题就是MySQL的慢查询或者没有利用索引的查询，所以这里主要给大家介绍如何利用官方的 mysqldumpslow工具方便的查看这些信息。如何打开MySQL的慢查询，请点击《打开MySQL的慢查询记录》。
mysqldumpslow命令
/path/mysqldumpslow  -s c -t 10 /database/mysql/slow-log
这会输出记录次数最多的10条SQL语句，其中：

-s,  是表示按照何种方式排序，c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序，ac、at、al、ar，表示相应的倒叙；
-t, 是top n的意思，即为返回前面多少条的数据；
-g, 后边可以写一个正则匹配模式，大小写不敏感的；

比如
/path/mysqldumpslow  -s r -t 10 /database/mysql/slow-log
得到返回记录集最多的10个查询。
/path/mysqldumpslow  -s t -t 10 -g “left join” /database/mysql/slow-log
得到按照时间排序的前10条里面含有左连接的查询语句。
小结
使用mysqldumpslow命令可以非常明确的得到各种我们需要的查询语句，对MySQL查询语句的监控、分析、优化是MySQL优化的第一步，也是 非常重要的一步。
]]></description>
		<wfw:commentRss>http://jk.scanmon.com/wp/mysql-mysqldumpslow.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL索引分类和各自用途</title>
		<link>http://jk.scanmon.com/wp/mysql-index.html</link>
		<comments>http://jk.scanmon.com/wp/mysql-index.html#comments</comments>
		<pubDate>Wed, 07 Apr 2010 02:57:24 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=2250</guid>
		<description><![CDATA[一、 MySQL: 索引以B树格式保存
Memory存储引擎可以选择Hash或BTree索引，Hash索引只能用于=或&#38; lt;=&#62;的等式比较。
1、普通索引：create index on Tablename(列的列表)
alter table TableName add index (列的列表)
create table  TableName([...], index [IndexName] (列的列表)
2、唯一性索引：create unique  index
alter &#8230; add unique
主键：一种唯一性索引，必须指定为primary key
3、全文索引：从3.23.23版开始支持全文索引和全文检索，FULLTEXT，
可以在char、varchar或text类型的 列上创建。
4、单列索引、多列索引：
多个单列索引与单个多列索引的查询效果不同，因为：
执行查询 时，MySQL只能使用一个索引，会从多个索引中选择一个限制最为严格的索引。
5、最左前缀(Leftmost  Prefixing)：多列索引，例如：fname_lname_age索引，以下的搜索条件MySQL都将使用
fname_lname_age索引：firstname,lastname,age；firstname,lastname；firstname，其他 情况将不使用。
二、根据sql查询语句确定创建哪种类型的索引，如何优化查询
选择索引列：
a.性 能优化过程中，选择在哪个列上创建索引是最重要的步骤之一。可以考虑使用索引的主要有
两种类型的列：在where子句中出现的列，在 join子句中出现的列。
b.考虑列中值的分布，索引的列的基数越大，索引的效果越好。
c.使用短索引，如果对字符 串列进行索引，应该指定一个前缀长度，可节省大量索引空间，提升查询速度。
d.利用最左前缀
e.不要过度索引，只保 持所需的索引。每个额外的索引都要占用额外的磁盘空间，并降低写操作的性能。
在修改表的内容时，索引必须进行更新，有时可能需要重构， 因此，索引越多，所花的时间越长。
MySQL只对一下操作符才使用索引：&#60;,&#60;=,=,&#62;,&#38; gt;=,between,in,
以及某些时候的like(不以通配符%或_开头的情形)。
]]></description>
		<wfw:commentRss>http://jk.scanmon.com/wp/mysql-index.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Debian Lenny 安装Oracle 10G R2 图文无错版</title>
		<link>http://jk.scanmon.com/wp/debian-lenny-oracle-10g-r2.html</link>
		<comments>http://jk.scanmon.com/wp/debian-lenny-oracle-10g-r2.html#comments</comments>
		<pubDate>Thu, 25 Feb 2010 05:50:34 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=2035</guid>
		<description><![CDATA[经过几天的研究实验，终于把这个文档做成无错版，以下是文档内容，网上的一些资料压根装不起来，安装过程中会提示一些文件不能MAKE过去
此文档适用于在一个局域网内安装ORACLE使用，如果是从私网-公网这样的方式安装请使用vnc4server+x-window-system+xdm的方式远程安装
Oracle 10G R2到这里下载
64位机器：http://www.oracle.com/technology/software/products/database/oracle10g/htdocs/10201linx8664soft.html
32位机器：http://www.oracle.com/technology/global/cn/software/products/database/oracle10g/htdocs/10201linuxsoft.html
本文假设debian lenny已经配置完毕，作为服务器在安装的时候只安装“基本系统”，&#8221;KDE环境”不用安装(尽管oracle安装必须使用桌面环境，但这不是问题)。
第一步，配置基本的编译环境
1、编辑/etc/apt/source.list文件，将升级源配置为如下
deb http://mirrors.163.com/debian etch main     //此处使用etch的源主要是为了安装x-window-system-core，当然可以安装xorg
deb http://mirrors.163.com/debian lenny main contrib non-free


2、安装必要的软件
apt-get update
apt-get -y install gcc make binutils lesstif2 libc6 libc6-dev libmotif3 libaio1 libstdc++5 gawk ksh alien libtool lsb-rpm
apt-get -y install x-window-system-core  //安装x-window-system核心
apt-get -y install p7zip-full    //用来解压下载回来的oracle安装包


3、增加swap分区,oracle安装需要1G的交换分区（可以根据需要来添加，如果在安装系统的时候已经有交换分区了，可以忽略）
dd if=/dev/zero of=/tmp/swap bs=1M count=1000
chmod 600 /var/tmp/swap
mkswap /var/tmp/swap
swapon /var/tmp/swap
可以使用swapon -s 来查看交换分区，在安装完oracle后使用命令swapoff /var/tmp/swap关闭交换分区

4、创建用户
要用oracle用户安装和启动数据库
groupadd oinstall
groupadd dba
groupadd nobody  //创建这个组是因为oracle支持的redhat系统中默认有这个组，为了欺骗oracle，所以要建立这个组
useradd -g oinstall -G [...]]]></description>
		<wfw:commentRss>http://jk.scanmon.com/wp/debian-lenny-oracle-10g-r2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>相见恨晚的WordPress SQL实用查询的十四招</title>
		<link>http://jk.scanmon.com/wp/wordpress-sql.html</link>
		<comments>http://jk.scanmon.com/wp/wordpress-sql.html#comments</comments>
		<pubDate>Thu, 04 Feb 2010 08:30:46 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>
		<category><![CDATA[开源软件]]></category>
		<category><![CDATA[网站运维]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=1924</guid>
		<description><![CDATA[熟悉WordPress的人都知道WordPress是由MySQL数据库驱动的。MySQL是一个免费的关系数据库管理系统，大多数的主机托管服务商都有提供。WordPress所有数据如文章、评论、分类、设置等信息都是保存在MySQl数据库中。如果你想要了解更多关于MySQL的信息，可以访问WordPress的数据库模式。
举一个例子，如果你想在WordPress后台修改一些信息，查找每一个记录不仅耗时而且还很可能出错。而在WordPress数据库中通过简单地 执行一个SQL查询就可以非常快速高效地做必要的修改。 下面就列出几个非常实用的SQL查询，对你实用WordPress将有非常大的帮助。
备份WordPress数据库 
在执行任何修改之前，请先确保对数据库备份。要养成在做任何大的修改之前总是先备份下数据库的好习惯。这样一来，即使出现了什么错误，你还可以还原。
你可以下载WP-DB-Backup 或WP-DBManager 插件，通过WordPress管理面板来备份你的数据库。或者你也可以通过phpMyAdmin手动完成对你数据库备份。
如果你决定手动完成数据库备份，按照下面的操作步骤：
1、登录到phpMyAdmin。
2、选择WordPress 数据库。
3、点击导航顶部的输出。
4、选择你需要备份的表格，或者选择所有表格对整个数据库进行备份。
5、选择SQL将输出的文件存为 .sql的扩展名。
6、勾选”另存为文件” 复选框。
7、选择文件压缩类型，选择gzipped将数据库压缩。
8、最后点击“执行”将会出现一个下载窗口提示你保存备份文件。
十三个WordPress SQL查询语句 
执行下面这些查询最方便的方法是使用phpMyAdmin。phpMyAdmin是最常见的数据库编辑和查找工具。几乎所有的主机服务商的控制面板 都有提供这个工具。或者你也可以使用WordPress 插件WordPress SQL Executioner 来执行SQL查询。
使用 phpMyAdmin的话，其步骤如下:

登录 phpMyAdmin 面板选择WordPress数据库。
点击SQL标签，这样你就进入了一个SQL查询框的页面。

看到如下图所示的SQL查询框之后，你就可以在里执行SQL查询。

注意: 所有的查询都是直接的SQL查询，并假设标准的表格前缀是’wp_’ ，如果你使用其他的表格前缀，请相应地做修改。
1 变更Siteurl &#38; Homeurl
WordPress将站点URL的绝对路径和本地URL保存在数据库中。因此，如果你将WordPress站点从本地主机转到你的服务器，你的站点不会加载网络，因为你的绝对路径URL仍然指向你的本地主机。你需要改变站点URL和本地URL，网站才能运作。
解决办法:




以下为引用的内容：
UPDATE wp_options SET option_value = replace(option_value, ‘http://www.oldsiteurl.com‘, ‘http://www.newsiteurl.com’) WHERE option_name = ‘home’ OR option_name = ’siteurl’;




2 变更 GUID
当你将博客从本地主机转移到你的服务器之后，或者从一个域名转到另一个新的域名，你需要在wp_posts表格修复GUID 字段的URL。因为如果输入错误，GUID可以将文章或者页面转到正确的文章绝对路径。
解决方案:




以下为引用的内容：
UPDATE wp_posts SET guid = REPLACE (guid, ‘http://www.oldsiteurl.com’, ‘http://www.newsiteurl.com’);




3 更改内容中的URL
WordPress保存在数据库中的URL链接使用绝对路径而非相对路径。在每个发布文章的记录中，它保存的是旧的URL引用旧的资源。因此，如果你需要将这些URL转的新的域名位置，就可以使用下面的方法。
解决方法:




以下为引用的内容：
UPDATE wp_posts SET post_content = [...]]]></description>
		<wfw:commentRss>http://jk.scanmon.com/wp/wordpress-sql.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MYSQL批量删除多个数据表</title>
		<link>http://jk.scanmon.com/wp/mysql%e6%89%b9%e9%87%8f%e5%88%a0%e9%99%a4%e5%a4%9a%e4%b8%aa%e6%95%b0%e6%8d%ae%e8%a1%a8.html</link>
		<comments>http://jk.scanmon.com/wp/mysql%e6%89%b9%e9%87%8f%e5%88%a0%e9%99%a4%e5%a4%9a%e4%b8%aa%e6%95%b0%e6%8d%ae%e8%a1%a8.html#comments</comments>
		<pubDate>Tue, 26 Jan 2010 03:10:08 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[databases]]></category>

		<guid isPermaLink="false">http://jk.scanmon.com/?p=1876</guid>
		<description><![CDATA[以前安装过Discuz和ucenter，现在早已不用，占着空间也是浪费，决定把它们卸载掉，首先是把上传的Discuz和ucenter程序文件都删除掉，接着是删它们对应的数据库表，这个就麻烦了，怎么删除呢？

使用phpMyAdmin吧，它的地址得联系服务商，我博客的地址是：http://www.scanmon.com/phpmyadmin/，用数据库用户名和密码登录进去， 里面表很多，是由于多次安装DZ和其他程序，产生了很多不同前缀的表，我想批量删除带有uc_和cdb_的表，而留下boblog_和wp_的表，怎么操 作呢？
网上的方法大多都是一个个的删除，即先选中你要删除的表(可以多选），然后页面最下面中部有一个“选中项”的下拉列表。点开，选中删除就可以，由于表很多，这样一个个删很费时，一次次刷新也慢死，得找一个一次性删除多个数据表的方法。
费劲九牛二虎之力，参考了网上的命令：drop table xxx，终于总结出了一次性删除多个数据表的方法，现月影鹏鹏blog发出来与大家共享。
用phpMyAdmin登陆数据库，顶部有几个菜单选项：结构 SQL 搜索 查询 导出 Import 操作，选中SQL，然后输入语句：
【drop table `x_abc1`,`x_abc2`,`x_abc3`】
把所有要删除的表都写上去，执行就OK了。注意，请直接复制上面红色的内容，然后替换x_abc*为你的表格，如果有表格输入错误不影响正确的删除，但是会提示错误。
这里可以用一个小技巧，在页面左侧复制所有要删除的表，建议每次复制第一个字母相同的表，复制出来粘贴进记事本或word，形式如下：
x_abc1
x_abc2
x_abc3
在x_abc1前后都会有一个空格，这里将“ x”全部替换成“`”，再将“ ↓”（↓代表回车）替换成“`,”，最后就变成：`x_abc1`,`x_abc2`,`x_abc3
再在最后面添个“`”，前面加上“drop table ”，就成了前面的命令了。
比如，月影鹏鹏blog删除的命令形式就如下：
drop table `uc_admins`,`cdb_words`
]]></description>
		<wfw:commentRss>http://jk.scanmon.com/wp/mysql%e6%89%b9%e9%87%8f%e5%88%a0%e9%99%a4%e5%a4%9a%e4%b8%aa%e6%95%b0%e6%8d%ae%e8%a1%a8.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>如何清除mysql的mysql-bin日志</title>
		<link>http://jk.scanmon.com/wp/%e5%a6%82%e4%bd%95%e6%b8%85%e9%99%a4mysql%e7%9a%84mysql-bin%e6%97%a5%e5%bf%97-2.html</link>
		<comments>http://jk.scanmon.com/wp/%e5%a6%82%e4%bd%95%e6%b8%85%e9%99%a4mysql%e7%9a%84mysql-bin%e6%97%a5%e5%bf%97-2.html#comments</comments>
		<pubDate>Mon, 21 Dec 2009 13:31:45 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[问题]]></category>

		<guid isPermaLink="false">http://jacky.scanmon.com/?p=1475</guid>
		<description><![CDATA[
本文来自  http://jacky.scanmon.com/1475.html
在运维mysql 的过程中出现过这样的问题，mysql 的日志将磁盘空间占满 。所以如果你用了mysql log 记得定期清理，mysql 日志
如何清除mysql的mysql-bin日志
1查询musql-bin,mysql操作日志
mysql&#62; show master logs;
2删除,保留最新
mysql&#62;purge master logs to ‘mysql-bin.00001′;
3my.cnf中去掉log-bin就可不让生成这些日志文件了。
方法2
清理mysql的日志文件
发现var/db/mysql目录下有这么多
mysql-bin.000001
…
mysql-bin.000023
mysql-bin.index
而且比较大
数据库的操作日志
mysql&#62; reset master;
可以清理这些文件。
]]></description>
		<wfw:commentRss>http://jk.scanmon.com/wp/%e5%a6%82%e4%bd%95%e6%b8%85%e9%99%a4mysql%e7%9a%84mysql-bin%e6%97%a5%e5%bf%97-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>debian下mysql server的一个问题的解决</title>
		<link>http://jk.scanmon.com/wp/debian%e4%b8%8bmysql-server%e7%9a%84%e4%b8%80%e4%b8%aa%e9%97%ae%e9%a2%98%e7%9a%84%e8%a7%a3%e5%86%b3-2.html</link>
		<comments>http://jk.scanmon.com/wp/debian%e4%b8%8bmysql-server%e7%9a%84%e4%b8%80%e4%b8%aa%e9%97%ae%e9%a2%98%e7%9a%84%e8%a7%a3%e5%86%b3-2.html#comments</comments>
		<pubDate>Mon, 21 Dec 2009 12:45:01 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[databases]]></category>
		<category><![CDATA[linux 应用]]></category>
		<category><![CDATA[linux 系统]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[问题]]></category>

		<guid isPermaLink="false">http://jacky.scanmon.com/?p=1462</guid>
		<description><![CDATA[$sudo /etc/init.d/mysql start
Starting MySQL database server: mysqld . . ..
Checking for corrupt, not cleanly closed and upgrade needing tables..
/usr/bin/mysqladmin: connect to server at &#8216;localhost&#8217; failed
error: &#8216;Access denied for user &#8216;debian-sys-maint&#8217;@'localhost&#8217; (using password: YES)&#8217;
那么这时候可以去/etc/mysql/debian.cnf,找到里面的password
然后登录到mysql shell:
mysql&#62; GRANT ALL PRIVILEGES ON *.* TO &#8216;debian-sys-maint&#8217;@'localhost&#8217; IDENTIFIED BY &#8216;password&#8217; WITH GRANT OPTION;
mysql&#62; flush privileges;
七中的就是上面找到的password
然后
$sudo /etc/init.d/mysql restart
]]></description>
		<wfw:commentRss>http://jk.scanmon.com/wp/debian%e4%b8%8bmysql-server%e7%9a%84%e4%b8%80%e4%b8%aa%e9%97%ae%e9%a2%98%e7%9a%84%e8%a7%a3%e5%86%b3-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>怎样给MySQL数据库添加新用户</title>
		<link>http://jk.scanmon.com/wp/%e6%80%8e%e6%a0%b7%e7%bb%99mysql%e6%95%b0%e6%8d%ae%e5%ba%93%e6%b7%bb%e5%8a%a0%e6%96%b0%e7%94%a8%e6%88%b7.html</link>
		<comments>http://jk.scanmon.com/wp/%e6%80%8e%e6%a0%b7%e7%bb%99mysql%e6%95%b0%e6%8d%ae%e5%ba%93%e6%b7%bb%e5%8a%a0%e6%96%b0%e7%94%a8%e6%88%b7.html#comments</comments>
		<pubDate>Sat, 12 Dec 2009 07:24:09 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[问题]]></category>

		<guid isPermaLink="false">http://jacky.scanmon.com/?p=1411</guid>
		<description><![CDATA[
在VPS上安装完MySQL之后，缺省的用户只有root@localhost，新添加MySQL用户最简单的方法是:  在phpmyadmin里面执行如下语句(语句最后要加分;号)：
grant all privileges on DBNAME.* to USERNAME@localhost identified by 'PASSWORD'
flush privileges
当然在SSH里面运行
mysql -uroot -p
之后也能够输入上面的sql语句，效果一样。  解释如下：  这将添加新用户，用户名称是USERNAME，密码是PASSWORD，这个用户在DBNAME这个数据库里面有修改，读取等权限。
]]></description>
		<wfw:commentRss>http://jk.scanmon.com/wp/%e6%80%8e%e6%a0%b7%e7%bb%99mysql%e6%95%b0%e6%8d%ae%e5%ba%93%e6%b7%bb%e5%8a%a0%e6%96%b0%e7%94%a8%e6%88%b7.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySql数据表修复方法</title>
		<link>http://jk.scanmon.com/wp/mysql%e6%95%b0%e6%8d%ae%e8%a1%a8%e4%bf%ae%e5%a4%8d%e6%96%b9%e6%b3%95.html</link>
		<comments>http://jk.scanmon.com/wp/mysql%e6%95%b0%e6%8d%ae%e8%a1%a8%e4%bf%ae%e5%a4%8d%e6%96%b9%e6%b3%95.html#comments</comments>
		<pubDate>Thu, 10 Dec 2009 05:45:36 +0000</pubDate>
		<dc:creator>月影鹏鹏</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[question (问题)]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[表修复]]></category>

		<guid isPermaLink="false">http://jacky.scanmon.com/1389.html</guid>
		<description><![CDATA[
mysqld进程在一个写入当中被杀死。
计算机的意外关闭(例如，如果计算机掉电）。
一个硬件错误
这章描述如何检查和处理在MySQL数据库中的数据损坏。如果你的表损坏很多，你应该尝试找出其原因！见G.1 调试一个MySQL服务器。
在执行崩溃恢复时，理解在一个数据库中的每一个表tbl_name对应的在数据库目录中的3个文件是很重要的：
文件 用途
“tbl_name.frm” 表定义(表格)文件
“tbl_name.MYD” 数据文件
“tbl_name.MYI” 索引文件
这3个文件的每一个文件类型可能遭受不同形式的损坏，但是问题最常发生在数据文件和索引文件。
myisamchk 通过一行一行地创建一个“.MYD”（数据 )文件的副本来工作，它通过由删除老的“.MYD 文件并且重命名新文件到原来的文件名结束修复阶段。如果你使用&#8211;quick，myisamchk不创建一个临时“.MYD”文件，只是假定“.MYD” 文件是正确的并且仅创建一个新的索引文件，不接触“.MYD”文件，这是安全的，因为myisamchk自动检测“.MYD”文件是否损坏并且在这种情况下，放弃修复。你也可以给myisamchk两个&#8211;quick选项。在这种情况下，myisamchk不会在一些错误上(象重复键)放弃，相反试图通过修改“.MYD”文件解决它们。通常，只有在你在太少的空闲磁盘空间上实施一个正常修复，使用两个&#8211;quick选项才有用。在这种情况下，你应该至少在运行myisamchk前做一个备份。
13.4.1 怎样检查表的错误
为了检查一张表，使用下列命令：
myisamchk tbl_name
这能找出所有错误的99.99%。它不能找出的是仅仅涉及数据文件的损坏(这很不常见)。如果你想要检查一张表，你通常应该没有选项地运行myisamchk或用-s或&#8211;silent选项的任何一个。
myisamchk -e tbl_name
它做一个完全彻底的数据检查(-e意
szj(孙占杰) 16:44:08
思是“扩展检查”)。它对每一行做每个键的读检查以证实他们确实指向正确的行。这在一个有很多键的大表上可能花很长时间。myisamchk通常将在它发现第一个错误以后停止。如果你想要获得更多的信息，你能增加&#8211;verbose(-v)选项。这使得myisamchk继续一直到最多20个错误。在一般使用中，一个简单的myisamchk（没有除表名以外的参数)就足够了。
myisamchk -e -i tbl_name
象前面的命令一样，但是-i选项告诉myisamchk还打印出一些统计信息。
13.4.2 怎样修复表
一张损坏的表的症状通常是查询意外中断并且你能看到例如这些错误：
“tbl_name.frm”被锁定不能改变。
不能找到文件“tbl_name.MYI”（Errcode ：### ）。
从表处理器的得到错误###(此时，错误135是一个例外）。
意外的文件结束。
记录文件被毁坏。
在这些情况下，你必须修复表。myisamchk通常能检测并且修复出错的大部分东西。
修复过程包含最多4个阶段，在下面描述。在你开始前，你应该cd到数据库目录和检查表文件的权限，确保他们可被运行mysqld的Unix用户读取(和你，因为你需要存取你正在检查的文件)。如果它拒绝你修改文件，他们也必须是可被你写入的。
阶段1：检查你的表
运行myisamchk *.MYI或(myisamchk -e *.MYI，如果你有更多的时间)。使用-s（沉默)选项禁止不必要的信息。
你必须只修复那些myisamchk报告有一个错误的表。对这样的表，继续到阶段2。
如果在检查时，你得到奇怪的错误(例如out of memory错误)，或如果myisamchk崩溃，到阶段3。
舞台 2 ：简单安全的修复
首先，试试myisamchk -r -q tbl_name(-r -q意味着“快速恢复模式”)。这将试图不接触数据文件来修复索引文件。如果数据文件包含它应有的一切和在数据文件指向正确地点的删除连接，这应该管用并且表可被修复。开始修理下一张表。否则，使用下列过程：
在继续前做数据文件的一个备份。
使用myisamchk -r tbl_name(-r意味着“恢复模式”)。这将从数据文件中删除不正确的记录和已被删除的记录并重建索引文件。
如果前面的步骤失败，使用myisamchk &#8211;safe-recover tbl_name。安全恢复模式使用一个老的恢
szj(孙占杰) 16:44:09
复方法，处理常规恢复模式不行的少数情况(但是更慢)。
如果在修复时，你得到奇怪的错误(例如out of memory错误)，或如果myisamchk崩溃，到阶段3。
CMD到MYSql需要修复表的目录下；myisamchk -r tbl_name(绝对路径)
舞台 3 ：困难的修理
如果在索引文件的第一个16K块被破坏，或包含不正确的信息，或如果索引文件丢失，你只应该到这个阶段 。在这种情况下，创建一个新的索引文件是必要的。按如下这样做：
把数据文件移更安全的地方。
使用表描述文件创建新的(空)数据和索引文件：
shell> mysql db_name
mysql> Delete FROM tbl_name;
mysql> quit
将老的数据文件拷贝到新创建的数据文件之中。（不要只是将老文件移回新文件之中；你要保留一个副本以防某些东西出错。）
回到阶段2。现在myisamchk -r -q应该工作了。（这不应该是一个无限循环)。
阶段4：非常困难的修复
只有描述文件也破坏了，你才应该到达这个阶段。这应该从未发生过，因为在表被创建以后，描述文件就不再改变了。
从一个备份恢复描述文件并且回到阶段3。你也可以恢复索引文件并且回到阶段2。对后者，你应该用myisamchk -r启动。
如果你没有一个备份但是确切地知道表是怎样被创建的，在另一个数据库中创建表的一个拷贝。删除新的数据文件，然后从其他数据库将描述和索引文件移到破坏的数据库中。这给了你新的描述和索引文件，但是让数据文件独自留下来了。回到阶段2并且尝试重建索引文件。
13.4.3 表优化
为了组合成碎片的记录并且消除由于删除或更新记录而浪费的空间， 以恢复模式运行myisamchk：
shell> [...]]]></description>
		<wfw:commentRss>http://jk.scanmon.com/wp/mysql%e6%95%b0%e6%8d%ae%e8%a1%a8%e4%bf%ae%e5%a4%8d%e6%96%b9%e6%b3%95.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
