2010-03-25

如何避免 information_schema数据库在 PHPMyAdmin中显示

在默认的情况下,装完PHPMyAdmin之后,不管用什么样的账号登录,都会显示information_schema这个数据库,但是我们又不能对这个数据库进行操作,只能查看它,这个数据库里面存放的是数据库的表名、数据类型、访问权限等,大家都想把这个数据库隐藏掉,不要显示出来,其实 PHPMyAdmin提供在这项功能。
config.inc.php文件:修改下面这句 $cfg['Servers'][$i]['hide_db'] = ''; // Database name to be hidden from listings
$cfg['Servers'][$i]['hide_db'] = 'information_schema';
我们只要把information_schema填写在引号里面就好了。
填玩以后重新登录到PHPMyAdmin,会发现这个数据库已经不会显示了。

2009-03-30

问题是:谁养鱼? 爱因斯坦

爱因斯坦的智力(高难度)
1、有5栋五种颜色的房子;
2、每一位房子的主人国籍都不同;
3、这5个人每人只喝一个牌子的饮料,只抽一个牌子的香烟,只养一种宠物;
4、没有人有相同的宠物,抽相同牌子的香烟,喝相同的饮料。
问题是:谁养鱼?
提示:
1、英国人住在红房子里;
2、瑞典人养了一条狗;
3、丹麦人喝茶;
4、绿房子在白房子左边;
5、绿房子主人喝咖啡;
6、抽PALL MALL牌烟的人养了一只鸟;
7、黄房子主人抽DUNHILL牌烟;
8、住在中间那间房子的人喝牛奶;
9、挪威人住在第一间房子;
10、抽混合烟的人住在养猫人旁边;
11、养马人住在DUNHILL烟的人旁边;
12、抽BLUE MASTER烟的人喝啤酒;
13、德国人抽PRINCE烟;
14、挪威人住在蓝房子旁边;
15、抽混合烟的人的邻居喝矿泉水。
爱因斯坦在20世纪初出的这个谜语。他说世界上有98%的人答不出来。
问题是:谁养鱼?

2009-03-19

INnodb引擎建立表该如何恢复

问题:data文件夹有备份,重装mysql后将文件夹拷贝过去,其他的表都没问题,只有wordpress的数据表有问题,数据库倒是显示了,但是数据库里没有任何表

原因:wordpress的数据表是用INnodb引擎建立的,所以导致这个问题

分析:如果是MyISAM (MySQL缺省存贮引擎)那么直接拷贝data文件夹下相应数据库的文件夹过去就可以了,而INnodb引擎建立的表的数据却存在 data/ibdata1文件里,即使原模原样直接拷贝过去表也不能显示,如何从IBData中恢复MySQL数据库?

恢复过程:

1、停止MySQL服务
2、在[mysqld]段中增加:innodb_force_recovery = 4
3、修改文件中datadir以及innodb_data_home_dir的指向--指向之前的数据文件目录,保存my.ini
4、启动数据库(如果不能启动,请清除日志文件:data/ib_logfile0,data/ib_logfile1)
6、停止数据库 注释掉innodb_force_recovery = 4项
7、重新启动数据库,应该可以用mysqldump导出数据了

参考:

如何从IBData中恢复MySQL数据库

MySQL InnoDB 数据库的恢复

其他相关文章:

MySQL:InnoDB和MyISAM的差别

MYSQL服务不能启动 错误1067:进程意外中止(仅为其中一种的解决方法)

MySQL:InnoDB和MyISAM的差别

InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。下面是已知的两者之间的差别,仅供参考。

innodb
InnoDB 给 MySQL 提供了具有事务(commit)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)的事务安全(transaction-safe (ACID compliant))型表。InnoDB 提供了行锁(locking on row level),提供与 Oracle 类型一致的不加锁读取(non-locking read in SELECTs)。这些特性均提高了多用户并发操作的性能表现。在InnoDB表中不需要扩大锁定(lock escalation),因为 InnoDB 的列锁定(row level locks)适宜非常小的空间。InnoDB 是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。

InnoDB 的设计目标是处理大容量数据库系统,它的 CPU 利用率是其它基于磁盘的关系数据库引擎所不能比的。在技术上,InnoDB 是一套放在 MySQL 后台的完整数据库系统,InnoDB 在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。 InnoDB 把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在 MyISAM 中,表被存放在单独的文件中。InnoDB 表的大小只受限于操作系统的文件大小,一般为 2 GB。

在 http://www.innodb.com/ 上可以找到 InnoDB 最新的信息。InnoDB 手册的最新版本总是被放置在那里,并且在那里可以得到 InnoDB 的商业许可(order commercial licenses)以及支持。

InnoDB 现在(2001年十月)在一些大的需高性能的数据库站点上被使用。著名的 Internet 新闻站点 Slashdot.org 就是使用的 InnoDB。 Mytrix, Inc. 在 InnoDB 表上存储了超过 1 TB 的数据,而且另外的一个站点在 InnoDB 表上处理着平均每秒 800 次的插入/更新的负载。

MyISAM
MyISAM 是MySQL缺省存贮引擎 .

每张MyISAM 桌被存放在盘在三个文件 。frm 文件存放表格定义。 数据文件是MYD (MYData) 。 索引文件是MYI (MYIndex) 引伸。

以下是一些细节和具体实现的差别:

1.InnoDB不支持FULLTEXT类型的索引。
2.InnoDB 中不保存表的具体行数,也就是说,执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。
3.对于AUTO_INCREMENT类型的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中,可以和其他字段一起建立联合索引。
4.DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
5.LOAD TABLE FROM MASTER操作对InnoDB是不起作用的,解决方法是首先把InnoDB表改成MyISAM表,导入数据后再改成InnoDB表,但是对于使用的额外的InnoDB特性(例如外键)的表不适用。

另外,InnoDB表的行锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “%aaa%”

任何一种表都不是万能的,只用恰当的针对业务类型来选择合适的表类型,才能最大的发挥MySQL的性能优势。

MYSQL服务不能启动 错误1067:进程意外中止(仅为其中一种的解决方法)

如题,如果不能启动,请清除日志文件:data/ib_logfile0,data/ib_logfile1

这只是自己遇到的一种情况,这种方法适用与以下情况:

1、将mysql服务停止,再次重启发现不能重启服务了

2、重新配置mysql的时候总是不能启动服务

3、发现不能启动,结果重装mysql,为了保留文件于是将拷贝的data文件夹拷贝回去结果发现不能启动

其他知识:

sc delete mysql 删除mysql服务

mysqld—nt install 安装服务

网络上有很多其他的情况的总结(huangguaxuan没有测试):

mysql服务不能启动

MYSQL不能启动解决办法