According to:http://www.blogjava.net/lyjjq/articles/345778.html

mysql_install_db相关介绍

mysql_install_db 脚本的目的是生成新的MySQL授权表。它不覆盖已有的MySQL授权表,并且它不影响任何其它数据。

如果你想要重新创建授权表,首先停止mysqld服务器(如果它正运行)。然后重新命名数据目录下的MySQL目录并保存,然后运行mysql_install_db。例如:

shell> mv mysql-data-directory/mysql mysql-data-directory/mysql-old

shell> mysql_install_db --user=mysql

本节列出了运行mysql_install_db时你可能遇到的问题:

·         mysql_install_db fails to install the grant tables

你会发现mysql_install_db不能安装 授权表,显示下面的消息后终止:

Starting mysqld daemon with databases from XXXXXX

mysqld ended

在这种情况下,你应该很小心地检验日志文件!日志文件应该位于目录“XXXXXX”,用错误消息命名,并且应该指出为什么mysqld没启动。如果你不理解发生的事情,邮寄一份错误报告,包含日志文件!

·         已经有一个amysqld进程在运行

表示服务器在运行,这种情况下可能已经创建了授权表。如果如此,则不再需要运行mysql_install_db,因为只需要运行一次(当你首次安装MySQL时)。

·         当一个服务器正运行时,安装第二个服务器不工作

这只有在当你已经有已存在的MySQL安装但是想要把新安装放在一个不同的地方时才会发生。例如,你可能已经有了一个产品安装,但为了测试想要同时运行2个安装。通常当你试着运行第二个服务器时,发生的问题是它试图和第一个使用同样的套接字和端口。在这种情况下,你将遇到错误消息:

Can't start server: Bind on TCP/IP port:

Address already in use

Can't start server: Bind on unix socket...

·         你没有“ /tmp ”的写权限

如果你没有写权限在默认位置(在“/tmp”里)创建一个Unix套接字文件,或没有在“/tmp”创建临时文件的许可,在运行mysql_install_db或mysqld服务器时,你将遇到一个错误。

你可以在开始mysql_install_db或mysqld之前执行以下命令指定一个不同的Unix套接字文件位置和临时目录:

shell> TMPDIR=/some_tmp_dir/

shell> MYSQL_UNIX_PORT=/some_tmp_dir/mysql.sock

shell> export TMPDIR MYSQL_UNIX_PORT

some_tmp_dir应该是你有写许可的某个目录的全路径。

然后,你应当能够用这些命令运行mysql_install_db并启动服务器:

shell> bin/mysql_install_db --user=mysql

shell> bin/mysqld_safe --user=mysql &

如果mysql_install_db位于scripts目录下,首先修改命令scripts/mysql_install_db。