El Capitan 升级后 Mysql 不工作

标签 mysql macos macports osx-elcapitan mysql5

我最近将 Mac Pro 升级为 Mac Mini,并使用迁移助手将我的所有文件和应用程序传输到 Mac Mini。

我还重新安装了 macports 并配置了 apache 等。所以我设法让我的 localhost 和 php 在新机器上工作。

但是我现在无法从终端启动 mysql?

当我尝试平常的方式时:

mysql5 -u root -p;

并出现以下错误:

Error:  ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock' (2)

我也尝试过重新启动 mysql:

sudo opt/local/share/mysql5/mysql/mysql.server restart

并出现以下错误:

ERROR! Manager of pid-file quit without updating file.

当我导航到 mysql5 目录/opt/local/var/db/mysql5/时,我看到数据库列表,并看到以下 PID 文件:

myName.local.pid 

localhost pid

所以结构与我的旧 Mac 上的结构相似,但我对导致 mysql 无法启动的原因感到困惑?

有趣的是,mysql 一定仍在工作,因为当我在浏览器中运行 .php 脚本时,mysql 查询工作并且正在检索数据。

非常感谢任何帮助。

最佳答案

已解决

我想分享我遇到的解决此问题的解决方案。

当您从以前版本的 OSX 更新到 El Capitan 时,您的 mysql 设置会丢失。当您尝试通过以下方式连接时:

 mysql5 -u root -p;

我收到以下错误:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/opt/local/var/run/mysql5/mysqld.sock' (2)

问题出在 my.cnf!

macports mysql 的默认配置不附带 my.cnf(但它有其他 my-medium.cnf、my-small.cnf),因此 Macports mysql 客户端将查找 Macports 服务器的设置位置看看。

我还了解到,如果您将套接字路径更改为默认值,那么您需要告诉所有内容它在哪里。大多数程序都有一个可以重写的硬编码默认值,我已经将 macports 默认值重写为 php 编译的版本,因此您需要告诉客户端您将其更改为什么,否则它应该如何知道。

因为我在opt/local/share/mysql5/mysql中没有my.cnf的副本,所以客户端不知道在哪里寻找套接字。因此,我必须在 my.cnf 中为 [client] 和 [mysqld] 配置定义套接字的路径。

在我的例子中,套接字的路径应该是:

socket = /opt/local/var/run/mysql5/mysqld.sock

然后我重新启动了mysql:

sudo /opt/local/share/mysql5/mysql/mysql.server restart

终于成功了。

希望这有帮助。

关于El Capitan 升级后 Mysql 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36083202/

相关文章:

php - 事件流的智能 MySQL GROUP BY

java - 从 Mac 上的终端运行 testng.xml

ios - 构建 Xcode 项目并检索 .app 文件?

iphone - 拍摄当前 Photoshop 文件的快照

python - 我可以/应该使用 dpkg 在 MacPorts 下安装 .deb 文件吗

php - 在数据库获取号附近打印货币符号

php - 如何在 PHP/MySQL 中存储生日和年龄以便年龄可以每天更新?

PHP mysql_db_query 被弃用。无法修复

macos - ODBC 驱动程序管理器 : Data source name not found and no default driver specified

在 Eclipse 中使用 OsX Mavericks 上的 Macports 为 Pydev 安装 OpenCV