了解MySQl数据库目录
2009-01-04 11:16:02 来源:WEB开发网下面是一个实例,它是作为一个短客户机会话的结果出现在常规日志中的信息中的,这个会话在 test 数据库中从mytest.pet复制一个表,并插入一行到该表中,然后删除该表:
注意第二行是一个错误的语句,但是也被记录下来。
常规日志包含日期和时间、服务器线程 ID、事件类型以及特定事件信息的列。
同一个会话出现在如下的更新日志中:
use test;
create table mytest select * from mytest.pet;
insert into mytest set name='tom',owner='jerry',species='cat',sex='f',birth='2000-01-01';
drop table mytest;
更新纪录中没有记录错误的语句,因此对于恢复被破坏的数据库内容非常有意义。
对于更新日志,日志的扩展格式是可用的,即使是用 --log - long - format 选项。扩展的日志提供有关谁何时发布查询的信息。当然,这将使用更多的磁盘空间,但是,如果您不将更新日志的内容与常规日志中的连接事件相联系就想知道谁正在做什么的话,扩展日志或许是可用的。
确保日志文件的安全且不被用户任意读取是个好注意。常规日志和更新日志都包含有诸如口令这样的敏感信息,这是因为它们包含了查询的文本。下面是您不想让任何人都能读取的日志项,因为它显示了 root 用户的口令:
010206 23:30:02 4 Query update mysql.user set password=password("peking77.") where User="root"
有关检查可设置数据目录许可权的信息,数据目录安全的简短指令由下列命令组成:
$ chmod 700 DATADIR
以拥有该数据目录的 UNIX 用户身份来运行此命令。还要确保服务器以该用户身份运行,否则此命令不仅将其他用户排斥在该数据目录之外(您想要的),还将阻止服务器访问您的数据库(您不要的)。
状态文件出现在数据目录的最高级,就像数据库目录一样,因此您可能会想到那些文件的名字是否会相互混淆或者被误认为是数据库名(例如,当服务器正在执行 SHOW DATABASE 语句时)。答案是:不会的。状态和日志信息存储在文件中,而数据库是目录,因此可执行程序可以将它们与一个简单的 stat() 调用相区别(是服务器告诉它们怎样区分的)。如果您正在监视数据目录,则可以通过使用 ls -l 将状态文件从数据库目录中区分开来,并且检查该模式信息的第一个字符以查看它是‘-’还是‘d’:
您还可以通过查看名字而简单地告之:所有状态文件名都包含一个句点,但是数据库目录名没有句点(句点不是数据库名的合法字符)。
总结
通过本节,读者可以对MySQL的数据保存方式有了一定的认识。本节中较为重要的内容有:
1、数据库目录的位置
2、MySQL是如何表示数据表的
3、MySQL的状态文件的种类和作用
了解MySQL如何保存数据,以及状态文件的作用,对于备份数据库是有重要意义的,根据MySQL数据库目录的特点,直接拷贝就是备份数据的重要方法之一。
更多精彩
赞助商链接