在Mac OS X v10.6 (Snow Leopard)上,启动MySQL会出现以下错误:

服务器退出,没有更新PID文件

文件my.cnf

[mysqld]
port            = 3306

socket          = /tmp/mysql.sock

skip-external-locking

key_buffer_size = 16K

pid-file=/var/run/mysqld/mysqld.pid

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

当前回答

我希望这对你有用。

在检查错误日志后,我发现了这个:

120309 17:42:49 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
120309 17:42:50 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive
120309 17:42:50 [Warning] You need to use --log-bin to make --binlog-format work.
120309 17:42:50 [Note] Plugin 'FEDERATED' is disabled.
120309 17:42:50 InnoDB: The InnoDB memory heap is disabled
120309 17:42:50 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120309 17:42:50 InnoDB: Compressed tables use zlib 1.2.3
120309 17:42:50 InnoDB: Initializing buffer pool, size = 16.0M
120309 17:42:50 InnoDB: Completed initialization of buffer pool
120309 17:42:50  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
InnoDB: File name /usr/local/mysql/data/ib_logfile0
InnoDB: File operation call: 'open'.
InnoDB: Cannot continue operation.
120309 17:42:50 mysqld_safe mysqld from pid file /usr/local/mysql/data/lu1s.local.pid ended

为了解决这个问题,我给了整个mysql文件夹的所有权:

cd /usr/local
sudo chown mysql mysql
sudo chown mysql mysql-5.5.21-osx10.6-x86_64
sudo chown _mysql mysql
sudo chown _mysql mysql-5.5.21-osx10.6-x86_64

然后(你也可以做命令行),我应用权限(一旦我把所有权给_mysql和mysql用户),从文件夹/usr/local/mysql-5.5.21-osx10.6-x86_64的“获取信息”菜单中的所有附带的文件夹。你不需要把它传给别名,因为它只是一个别名。

文件夹的名称取决于MySQL的安装版本。

其他回答

我在交换服务器IP地址后遇到了这个问题。在此之前,数据库工作正常。在/etc/my.cnf文件中有一个条目需要更新:

bind-address = xxx.xxx.xxx.xx

里面有旧的IP地址。

错误日志说了什么?我得到了这个错误,它最终是my.cnf文件中的一个旧的无效设置,这是MySQL错误日志指示的。如果不是错误的配置设置,错误日志至少应该为您指明正确的方向。

在我的例子中,问题是MySQL数据目录被意外地移动到错误的目录(/var/log,而不是/var/lib)。

在将数据移回/var/lib/mysql并重新启动服务器后,一切又恢复正常了。

我在Mac OS X v10.7.5 (Lion)上尝试升级时遇到了这个问题。

不幸的是,MySQL也从5.5.14升级到5.6.10。我尝试了新版本,但它不起作用。

我决定回到我以前的设置,做了一个

brew switch mysql 5.5.14

这并没有解决问题。我在其他地方阅读并这样做了,瞧!一切都回来了:)

cd /usr/local/var/mysql
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak

我最近遇到了这个问题,但它之前是工作的,然后停止了。

这是因为mysql最初是我创建的。服务器的根用户,而不是我自己。

修复方法是删除err日志文件(它属于_mysql)。重新开始就通过了。