在Snow Leopard上启动MySQL错误

时间:2010-06-27 02:27:51

标签: mysql sql macos osx-snow-leopard

原始邮寄

我刚刚删除并重新安装了Snow Leopard。我安装了MySQL 5.1.48 64位清理。我遇到了MySQL服务器的问题......当我启动计算机并登录时,服务器没有运行。我尝试通过单击“启动MySQL服务器”使用首选项窗格启动它,但它所做的只是突出显示按钮蓝色并想一会儿,然后按钮恢复正常并且没有任何反复发生。

然后我尝试从终端启动它:

Hristo$ sudo /usr/local/mysql/support-files/mysql.server start
Starting MySQL
.....................................................................
ERROR! Manager of pid-file quit without updating file.

所以我检查了状态:

Hristo$ sudo /usr/local/mysql/support-files/mysql.server status
Password:
/usr/local/mysql/support-files/mysql.server: line 418: pidof: command not found
 ERROR! MySQL is not running

我试过了:

Hristo$ /usr/local/mysql/bin/mysql -u root -p
Enter password: 
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

所以我不知道该怎么做。当我第一次安装时,服务器正在工作,但我去了偏好窗格试图阻止它...同样的事情发生了......我点击了“停止MysQL服务器”按钮,它做了一些思考,然后什么也没做。所以我重新启动计算机,现在我遇到了上述问题,显然,mysql.sock文件不在/ tmp /中。我安装的时候就在那里,重新启动计算机后就不存在了。

有什么想法吗?

更新

这是我的/etc/my.cnf文件。

[client]
socket = /var/mysql/mysql.sock

[mysqld]
socket = /var/mysql/mysql.sock

更新2

在设置Apache,PHP和MySQL时,我遵循了以下指示:http://superfancy.net/coding/php-mysql-apache-in-mac-osx-leopard/现在,如果我删除MySQL配置文件,事情似乎工作正常。但是当my.cnf中存在/etc/时,事情就不起作用了。 MySQL版本是:

Hristo$ mysql --version
/usr/local/mysql/bin/mysql  Ver 14.14 Distrib 5.1.46, for apple-darwin9.8.0 (i386) using readline 5.1

更新3

mysql.err:

100706 11:38:36 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
100706 11:38:36 [Warning] '--log' is deprecated and will be removed in a future release. Please use ''--general_log'/'--general_log_file'' instead.
100706 11:38:36 [Warning] '--log_slow_queries' is deprecated and will be removed in a future release. Please use ''--slow_query_log'/'--slow_query_log_file'' instead.
100706 11:38:36 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive
100706 11:38:36 [Note] Plugin 'FEDERATED' is disabled.
100706 11:38:36  InnoDB: Started; log sequence number 0 69987
100706 11:38:36 [ERROR] Can't start server : Bind on unix socket: Permission denied
100706 11:38:36 [ERROR] Do you already have another mysqld server running on socket: /var/mysql/mysql.sock ?
100706 11:38:36 [ERROR] Aborting

100706 11:38:36  InnoDB: Starting shutdown...
100706 11:38:41  InnoDB: Shutdown completed; log sequence number 0 69987
100706 11:38:41 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

mysql.log:

/usr/local/mysql/bin/mysqld, Version: 5.1.46-log (MySQL Community Server (GPL)). started with:
Tcp port: 0  Unix socket: /var/mysql/mysql.sock
Time                 Id Command    Argument

10 个答案:

答案 0 :(得分:16)

使用快速安装方法安装自制软件包管理器 http://github.com/mxcl/homebrew

然后从终端

brew install mysql

并按照安装后的简短说明列表

再次查看说明

brew info mysql

答案 1 :(得分:5)

我认为你的my.cnf文件中存在错误。

尝试获取其中一个my.cnf文件或在[mysqld]部分下添加用户,pid-file,port,basedir,datadir,tmpdir的选项(这里是linux机器上基本mysqld设置的引用,适用于OS X也许this会有所帮助)

[mysqld]
#
# * Basic Settings
#

user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
skip-external-locking

#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address        = 127.0.0.1

答案 2 :(得分:4)

以防万一其他人遇到这个令人愤怒的问题......

自制软件安装mysql,雪豹(最新更新)

确保您的/usr/local/var/mysql和所有子目录都归当前用户所有!

sudo chown -R <user> /usr/local/var/mysql

如果你想使用/etc/my.cnf启动mysql并指定类似

的东西
default-character-set=utf8

您的服务器永远不会启动。我相信默认情况下MySql 5.5.x有这个设置。在my.cnf文件中注释掉这一行 mysql.server start应该可以做到。

答案 3 :(得分:3)

每次加载MySQL时都应重新创建该文件,但有时权限会受到影响。尝试手动创建/tmp/mysql.sock

在linux上,命令是:

sudo touch /tmp/mysqld.sock

然后设置正确的所有者: sudo chown mysql:mysql /tmp/mysqld.sock

我假设mac上的命令行是相同的。

答案 4 :(得分:3)

我认为其他一些解决方案适合其他人,但我有所有这些相同的症状(包括line 418: pidof: command not found问题),但我的根本原因有点不同。

我有一个工作/etc/my.cnf文件突然停止工作,所以我确信问题不是我的配置。事实证明,/usr/local/var/mysql/下的子目录由_mysql:staff所有,当它应该由我拥有时。运行chown -R 'whoami' /usr/local/var/mysql/后,一切都与世界相符。

答案 5 :(得分:2)

首先,你必须解锁那个pid进程。 srvice mysql stop停止mysql 在那之后输入这个命令ps-ef| grep mysql它将显示两个sid的pid。杀死两个 kill -9 pid 1 pid2然后按service mysql start启动sql。

答案 6 :(得分:1)

似乎有一条错误消息:

line 418: pidof: command not found

您是否安装了pidofIts manpage说:

  

pidof只是一个(符号)链接到killall5程序,它也应该位于/ sbin

也许符号链接不存在或者Mac OS上没有安装killall5?

答案 7 :(得分:0)

http://dev.mysql.com/doc/refman/5.5/en/mysql-server.html

引用David Tonhofer:

And also add
-----------
echo "Manager PID file is $pid_file, Server PID file is $server_pid_file"
-----------
directly before the line 'case "$mode" in'
for some great debugging justice.

我最初的猜测是mysqld没有更新/删除其pidfile的权限,可能还有一个需要手动删除的遗留pidfile。但“伟大的调试正义”听起来好得令人难以置信。 :)

答案 8 :(得分:0)

尝试将其安装为MAMP的一部分。这将在不同的位置安装一个mysql服务器(Applications / MAMP / mysql以及apache等。然后你可以使用它来启动它。你也可以使用acitivity监视器(应用程序/实用程序)监视活动。

删除:/Applications/MAMP/tmp/mysql/mysql.pid

并且重新启动确实有帮助。

HTH

答案 9 :(得分:0)

如果您安装了查看自制程序,请尝试

unset TMPDIR
mysql_install_db