Lion上的MySQL 5.5无法正常工作

时间:2012-01-31 07:22:02

标签: mysql macos osx-lion

我已经通过Mac OS X 10.7上的磁盘映像安装了MySQL 5.5。我还在/usr/local/mysql/bin的路径中添加了.bash_profile

which mysql返回/usr/local/mysql/bin/mysql

然而,无论我尝试什么,我似乎无法让服务器运行。

mysql -u root返回:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

sudo /usr/local/mysql/bin/mysqld_safe启动,然后立即停止守护程序:

120130 23:18:57 mysqld_safe Logging to '/usr/local/mysql/data/Bryans-Macbook-Pro.local.err'.
120130 23:18:57 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
120130 23:18:59 mysqld_safe mysqld from pid file /usr/local/mysql/data/Bryans-Macbook-Pro.local.pid ended

我觉得我已经尝试了所有可能找到的解决方案,现在我已经没有想法了。我甚至尝试过安装旧版本的MySQL(5.1)并获得相同的结果和努力。

更多信息

运行mysqld会导致:

$ mysqld
120209  0:02:23 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql-5.5.20-osx10.6-x86_64/data/ is case insensitive
120209  0:02:23 [Note] Plugin 'FEDERATED' is disabled.
mysqld: Table 'mysql.plugin' doesn't exist
120209  0:02:23 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
120209  0:02:23 InnoDB: The InnoDB memory heap is disabled
120209  0:02:23 InnoDB: Mutexes and rw_locks use GCC atomic builtins
120209  0:02:23 InnoDB: Compressed tables use zlib 1.2.3
120209  0:02:23 InnoDB: Initializing buffer pool, size = 128.0M
120209  0:02:23 InnoDB: Completed initialization of buffer pool
120209  0:02:23 InnoDB: highest supported file format is Barracuda.
120209  0:02:23 InnoDB: 1.1.8 started; log sequence number 1595675
120209  0:02:23 [ERROR] mysqld: unknown option '--skip-locking'
120209  0:02:23 [ERROR] Aborting

120209  0:02:23  InnoDB: Starting shutdown...
120209  0:02:24  InnoDB: Shutdown completed; log sequence number 1595675
120209  0:02:24 [Note] mysqld: Shutdown complete

更新

好吧,我从我的系统中完全删除了mysql,重新安装了旧版本(5.1),它现在实际上正在启动。但是,我仍然无法运行rails server。我收到以下错误:

/Users/bricker/.rvm/gems/ruby-1.8.7-p352/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle: dlopen(/Users/bricker/.rvm/gems/ruby-1.8.7-p352/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle, 9): Library not loaded: /opt/local/lib/mysql5/mysql/libmysqlclient_r.16.dylib (LoadError)

所以,我运行了这个命令:

sudo install_name_tool -change libmysqlclient_r.16.dylib /opt/local/lib/mysql5/mysql/libmysqlclient_r.16.dylib ~/.rvm/gems/ruby-1.8.7-p352/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle

但在尝试启动'rails server'时仍然收到错误。

更新2

好的,最后的更新:在所有事情之后,多次重新安装mysql,看到所有这些错误 - 事实证明原始问题可能是宝石mysql2-0.2.7mysql2-0.3.11之间的冲突。最终解决问题:

  1. 从我的系统中删除了所有与mysql相关的文件(参见下面的bash脚本)

  2. 从MySQL网站上提供的磁盘映像安装MySQL 5.1.61(64位)

  3. 请按以下几行:

  4. sudo install_name_tool -change libmysqlclient_r.16.dylib /opt/local/lib/mysql5/mysql/libmysqlclient_r.16.dylib ~/.rvm/gems/ruby-1.8.7-p352/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle

    sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.8.7-p352/gems/mysql2-0.2.7/lib/mysql2/mysql2.bundle

    1. 运行gem uninstall mysql2,并选择了版本0.3.11 - 此RVM部分中剩下的唯一版本是mysql2-0.2.7
    2. 现在一切似乎都在发挥作用!再次感谢所有的帮助。

      Bash脚本从Mac OS X中删除与mysql相关的文件(10.6& 10.7)。

      #!/bin/bash
      sudo rm /usr/local/mysql
      sudo rm -rf /usr/local/mysql*
      sudo rm -rf /Library/StartupItems/MySQLCOM
      sudo rm -rf /Library/PreferencePanes/My*
      sudo rm -rf ~/Library/PreferencePanes/My*
      sudo rm -rf /Library/Receipts/mysql*
      sudo rm -rf /Library/Receipts/MySQL*
      sudo rm -rf /var/db/receipts/com.mysql.*
      echo "Done."
      

      复制到remove-mysql.sh,将其设为可执行文件(chmod +x remove-mysql.sh),然后运行它。

6 个答案:

答案 0 :(得分:4)

  1. 运行mysql_upgrade
  2. skip-lockingMySQL - what does skip-locking in my.cnf do?
  3. 中移除my.cnf选项

    如果在skip-locking中找不到my.cnf,则表示MySQL会根据您的期望路径加载它。仔细检查一下。

    P.S。你似乎是从一些旧版本升级你的MySQL,不是吗?

答案 1 :(得分:3)

在错误日志的其中一行中,引起了我的注意

120209  0:02:23 [ERROR] mysqld: unknown option '--skip-locking'

I think --skip-locking is a pretty old option

您可能希望将my.cnf替换为skip-external-locking而不是

自从你删除--skip-locking后,在my.cnf中找到datadir,并确保你指出mysql数据所在的变量。

答案 2 :(得分:2)

听起来(对我来说)就像你有权限问题一样。

检查以下目录中的权限:

  

的/ usr /本地/ MySQL的/ bin中
  在/ usr /本地/ mysql /下数据
  在/ usr /本地/ mysql /下包括
  在/ usr /本地/ MySQL的/ lib目录
  在/ usr /本地/ mysql /下脚本
  在/ usr /本地/ MySQL的/股
  ...
  的/ usr /本地/ MySQL的/ *

对于mysql用户和mysql组,它们都应该是read / write / excute

详细了解安装布局:http://dev.mysql.com/doc/refman/5.5/en/macosx-installation-pkg.html#mysql-installation-layout-macosx

mysql_safe脚本:我认为它可能会让用户切换到“用户”mysql。 阅读更多内容:http://dev.mysql.com/doc/refman/5.5/en/mysqld-safe.html

答案 3 :(得分:1)

检查以确保您的数据目录是mysql可读/写的。

尝试运行mysqld_safe --skip-locking &

那应该在后台启动服务器。然后使用“mysql”登录..它不应该要求任何凭据。

检查您是否在mysql数据库的用户表中定义了任何用户。

可能必须使用以下方式手动添加用户(因为上面的授权系统被绕过):

use mysql
insert into users <standard insert record stuff here>

完成后,从mysql客户端出来并执行killall -s1 mysqld ..您可能需要执行killall -s 15 mysqld以使后台工作干净利落。请不要在这个糟糕的旧流程上做-9

也可以使用Jobs / kill %%等。

答案 4 :(得分:0)

先试试

sudo /Library/StartupItems/MySQLCOM/MySQLCOM start

好像你需要正确安装它并让它创建所需的sock文件

答案 5 :(得分:0)

只需从mysql_install_db目录运行/usr/local即可。有关详细信息,请参阅this blog post