如何在mac上卸载未使用的MySQL版本?

时间:2017-05-05 00:29:43

标签: mysql linux macos homebrew

我正在运行mac OS sierra并且在机器上安装了多个MySQL。一个手动安装,另一个安装Homebrew。我没有问题连接和使用MySQL我认为是Homebrew版本,但老实说我不知道​​。

我正在处理一个sock错误,表明我使用的应用程序无法连接到MySQL(在我的本地mac上),而且我一直在挖掘。该应用程序运行在http,不应该有连接问题,但我收到以下错误,导致我找到两个mysql安装。有道理,因为当我拿到机器时,我在成为自制软件之前安装了mysql。

Connection Test Failed:
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

任何想法如何首先确定默认使用哪个,然后删除未使用的版本?请注意,默认运行的实例通过我用来管理本地数据库的所有客户端连接正常。

更新 在Cellar /usr/local/Cellar/mysql/5.6.25中有一个文件夹,然后在/ usr / local / var / mysql /中有另一个版本,它是我所有数据库所在的版本。

mysqld stop会出现以下错误并让我相信mysqld正在控制我要删除的MySQL版本:

$ mysqld stop

2017-05-04 18:44:54 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

2017-05-04 18:44:54 0 [Note] mysqld (mysqld 5.6.25) starting as process 1718 ...

2017-05-04 18:44:54 1718 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive

2017-05-04 18:44:54 1718 [Note] Plugin 'FEDERATED' is disabled.

2017-05-04 18:44:54 1718 [Note] InnoDB: Using atomics to ref count buffer pool pages

2017-05-04 18:44:54 1718 [Note] InnoDB: The InnoDB memory heap is disabled

2017-05-04 18:44:54 1718 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins

2017-05-04 18:44:54 1718 [Note] InnoDB: Memory barrier is not used

2017-05-04 18:44:54 1718 [Note] InnoDB: Compressed tables use zlib 1.2.3

2017-05-04 18:44:54 1718 [Note] InnoDB: Using CPU crc32 instructions

2017-05-04 18:44:54 1718 [Note] InnoDB: Initializing buffer pool, size = 128.0M

2017-05-04 18:44:54 1718 [Note] InnoDB: Completed initialization of buffer pool

2017-05-04 18:44:54 1718 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 35

2017-05-04 18:44:54 1718 [Note] InnoDB: Check

 or log files.

2017-05-04 18:43:41 1635 [ERROR] InnoDB: Unable to lock ./ibdata1, error: 35

2017-05-04 18:43:41 1635 [Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files.

1 个答案:

答案 0 :(得分:0)

只需使用psgrep命令执行此操作:

➜  ps -ef|grep mysqld
  501 51092     1   0         0:00.03 /bin/sh /usr/local/opt/mysql/bin/mysqld_safe --bind-address=127.0.0.1 --datadir=/usr/local/var/mysql
  501 51194 51092   0         0:00.45 /usr/local/Cellar/mysql/5.7.17/bin/mysqld --basedir=/usr/local/Cellar/mysql/5.7.17 --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/Cellar/mysql/5.7.17/lib/plugin --bind-address=127.0.0.1 --log-error=/usr/local/var/mysql/McGrady.local.err --pid-file=/usr/local/var/mysql/McGrady.local.pid

上面的结果表明程序和选项的路径,对我来说,我的数据目录是--datadir=/usr/local/var/mysql,所以你会找到你需要的那个。

如果您通过brew services list运行mysql,也可以使用brew services start mysql执行此操作:

➜  brew services list
Name    Status  User  Plist
mysql   started ** /Users/**/Library/LaunchAgents/homebrew.mxcl.mysql.plist

➜  cat /Users/**/Library/LaunchAgents/homebrew.mxcl.mysql.plist
  ...
  <array>
    <string>/usr/local/opt/mysql/bin/mysqld_safe</string>
    <string>--bind-address=127.0.0.1</string>
    <string>--datadir=/usr/local/var/mysql</string>
  </array>
  ...

在这里,我们可以获得datadir选项。

[ERROR] InnoDB: Unable to lock ./ibdata1, error: 35

上述错误只是告诉您其他一些进程(可能是 mysqld 的另一个实例)已经锁定了该文件。这意味着如果您已经启动了mysql服务器,下次运行mysqld命令时,您将收到此错误。

您可以看到this question找到停止服务器的方法。

或者只是kill -9 pid要杀死进程,要卸载mysql如果要删除brew安装的那个,你可以运行:

brew uninstall mysql

另一个,您可以使用:

sudo rm -rf /path_you_install_mysql.*

查看How do you uninstall MySQL from Mac OS X?