我有一台运行 CentOS 5.5 x86_64 的服务器,最近通过 YUM 安装了 MySQL 服务器,但是在启动服务器时出现以下问题:
[root@server etc]# service mysqld start
Warning: World-writable config file '/etc/my.cnf' is ignored
Warning: World-writable config file '/etc/my.cnf' is ignored
Warning: World-writable config file '/etc/my.cnf' is ignored
Warning: World-writable config file '/etc/my.cnf' is ignored
Timeout error occurred trying to start MySQL Daemon.
Starting MySQL: [FAILED]
我的 my.cnf 如下所示:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
old_passwords=1
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
我的 mysqld.log 如下所示:
111228 10:47:50 mysqld started
Warning: World-writable config file '/etc/my.cnf' is ignored
InnoDB: Log scan progressed past the checkpoint lsn 0 36808
111228 10:47:51 InnoDB: Database was not shut down normally!
InnoDB: Starting crash recovery.
InnoDB: Reading tablespace information from the .ibd files...
InnoDB: Restoring possible half-written data pages from the doublewrite
InnoDB: buffer...
InnoDB: Doing recovery: scanned up to log sequence number 0 43655
111228 10:47:51 InnoDB: Starting an apply batch of log records to the database...
InnoDB:进度百分比:7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
74 75 76 77 78 79 80 81 82 83 84 85 86 87
88 89 90 91 92 93 94 95 96 97 98 99
InnoDB: Apply batch completed
111228 10:47:51 InnoDB: Started; log sequence number 0 43655
111228 10:47:51 [ERROR] Fatal error: Can't open and lock privilege tables: Table
‘mysql.host’不存在
111228 10:47:51 mysqld 已结束`
谁能指出为什么会发生这种情况?
答案1
首先修复 /etc/my.cnf 的权限。由于它被忽略,您的 mysql 实例无法找到 datadir 变量指定的数据库目录。如果这不起作用,那么您可以运行以下命令来告诉 mysql 您的数据库的路径。
mysql_install_db --user=mysql --ldata=/var/lib/mysql/
答案2
我将首先修复错误消息警告您的问题:
Warning: World-writable config file '/etc/my.cnf' is ignored
例如:
chmod 0640 /etc/my.cnf
然后尝试再次启动它并查看它说了什么。
答案3
您最多需要将文件权限设置为 644。我注意到当脚本可写入“世界”时,它会变得很疯狂。
如果您遇到更多类似问题,但与目录有关,则需要将其设置为 755。