我已经通过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.7
和mysql2-0.3.11
之间的冲突。最终解决问题:
从我的系统中删除了所有与mysql相关的文件(参见下面的bash脚本)
从MySQL网站上提供的磁盘映像安装MySQL 5.1.61(64位)
请按以下几行:
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
gem uninstall mysql2
,并选择了版本0.3.11
- 此RVM部分中剩下的唯一版本是mysql2-0.2.7
。现在一切似乎都在发挥作用!再次感谢所有的帮助。
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
),然后运行它。
答案 0 :(得分:4)
mysql_upgrade
skip-locking
:MySQL - what does skip-locking in my.cnf do? 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。