这节列出在你运行MySQL_install_db
时,你可能遇见的问题:
MySQL_install_db
不安装授权表- 在显示下列消息以后,你可以发现
MySQL_install_db
不能安装授权表并终止:starting MySQLd daemon with databases from XXXXXX MySQL daemon ended
在这种情况下,你应该很小心地检验日志文件!日志文件应该位于目录“XXXXXX”,用错误消息命名,并且应该指出为什么
MySQLd
没启动。如果你不理解发生的事情,当你使用MySQLbug
邮寄一份错误报告时,包含日志文件!见2.3 怎样报告错误或问题。 - 已经有一个
MySQLd
守护程序在运行 - 在这种情况下,你可能根本不必运行
MySQL_install_db
。当你第一次安装MySQL时,你必须只运行MySQL_install_db
一次。 - 当一个守护进程正在运行时,安装第二个
MySQLd
守护进程不工作 - 这只有在当你已经有已存在的MySQL安装但是想要把新安装放在一个不同的地方时才会发生(例如,为了测试或者也许你简单地想要同时运行2个安装)。通常当你试着运行第二个服务器时,发生的问题是它试图和旧一个使用同样的套接字和端口。在这种情况下,你将得到错误消息:
Can't start server: Bind on TCP/IP port: Address already in use
或Can't start server : Bind on unix socket...
你能用一个不同的套接字和端口启动新的服务器,如下:shell> MySQL_UNIX_PORT=/tmp/MySQLd-new.sock shell> MySQL_TCP_PORT=3307 shell> export MySQL_UNIX_PORT MySQL_TCP_PORT shell> scripts/MySQL_install_db shell> bin/safe_MySQLd &
在这以后,你应该编辑你的服务器引导脚本手迹用不同的套接字和端口启动两个守护进程。例如,它能调用
safe_MySQLd
两次,但是对每次调用使用不同的--socket
、--port
和--basedir
选项。 - 你没有“ /tmp ”的写权限
- 如果你没有写权限在缺省地方(在“/tmp”里)创建一个套接字文件,或没有在“/tmp”创建临时文件的许可,在运行
MySQL_install_db
或当启动或使用MySQLd
时,你将得到一个错误。你可以如下地指定一个不同的套接字和临时目录:shell> TMPDIR=/some_tmp_dir/ shell> MySQL_UNIX_PORT=/some_tmp_dir/MySQLd.sock shell> export TMPDIR MySQL_UNIX_PORT
“some_tmp_dir”应该是你有写许可的某个目录的路径。在这以后,你应该能运行
MySQL_install_db
并且这些命令启动服务器:shell> scripts/MySQL_install_db shell> BINDIR/safe_MySQLd &
MySQLd
立刻崩溃- 如果你正在运行RedHat 5.0,有一个比2.0.7-5旧的
glibc
版本,你应该保证你安装了glibc
所有补丁!在MySQL邮件档案中有很多关于它的信息。邮件档案的链接可在联机MySQL文档页得到。也可见4.11.5 Linux 注意事项(所有Linux版本)。你也可以手工启动MySQLd
,使用--skip-grant
选项并且增加使用MySQL
本身的权限信息:shell> BINDIR/safe_MySQLd --skip-grant & shell> BINDIR/MySQL -u root MySQL
从
MySQL
,手工执行在MySQL_install_db
里面的SQL命令。保证你随后运行MySQLadmin reload
告诉服务器再装入授权表。