我正在运行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.
答案 0 :(得分:0)
只需使用ps
和grep
命令执行此操作:
➜ 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.*