Mysql_install_db相关介绍
时间:2010-09-21 来源:bingqihan
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。