20151214
主题:MySQL Installation-Related Programs
(来自MySQL reference manual 4.4)
=============================================
如果不存在数据目录和系统表,mysql_install_db会初始化数据目录,并创建系统表,它也会初始化系统表空间和管理InnoDB表所需的相关数据结构,到MySQL5.6.8,mysql_install_db是一个Perl脚本,安装过perl包的系统都可以使用这一脚本。在此之前,它是一个shell脚本,只能在类Unix系统上运行。
到5.6.8之后,在类unix平台上,安装时会创建一个my-default.cnf文件,mysql_install_db会将此文件复制到安装目录下,重命名为my.cnf的默认文件,在安装目录下能找到这个模板文件,用mysqld_safe启动server时,默认使用my.cnf文件,如果my.cnf已存在,mysql_install_db会假定它已经被使用,然后会另外生成一个叫my-new.cnf文件。
在默认的选项文件中,如果某些选项被注掉或失效是会出现异常,这一异常是sql_mode系统变量被设置成NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,这个设置会导致在修改事务表的数据时会报一些错误而不是警告。
语法
shell> mysql_install_db [options]
因为mysqld运行的时候需要访问数据目录,所以先执行mysql_install_db初始化数据目录,执行mysql_install_db时,使用的账户得跟运行mysqld所使用的账户一致,或者用root用户来执行初始化,用--user指定账户,同时可能需要指定其他的选项,比如--basedir或datadir,如果要初始化的实例不是安装软件是指定的目录,例如:
shell> scripts/mysql_install_db --user=mysql \
--basedir=/opt/mysql/mysql \
--datadir=/opt/mysql/mysql/data
mysql_install_db设置InnoDB表空间后,需要初始化一个完整的实例,修改表空间的一些特性。这包括系统表空间中第一个文件的文件名和undo日志的数量,如果你不想使用默认值得话,运行mysql_install_db之前,在配置文件中设置好这些参数: innodb_data_file_path 和 innodb_log_file_size,innodb_data_home_dir 和 innodb_log_group_home_dir,如果这些选项没有在既定路径的参数文件中,那么执行初始化是务必明确指定该文件的位置--defaults-extra-file。
如果安装的时候自定义tmpdir环境变量,但是该目录没有访问权限,那么mysql_install_db可能会执行失败,如果这样的话,可以复位该目录权限或改变TMPDIR到系统临时目录下/tmp.
阅读(649) | 评论(0) | 转发(0) |