如何让homebrew安装的mysql和mysql@5.7独立工作?

63lcw9qa  于 2023-05-05  发布在  Mysql
关注(0)|答案(1)|浏览(265)

我安装了(因为我需要它们)mysql(因此8.0)和mysql@5.7通过自制软件在MBP苹果M2 w/ Ventura 13.3.1
我正确地设置了(第一次)mysql安装;
现在我切换到mysql@5.7:首先,我注意到它没有安装一个适当的数据库(或者它使用的是相同的其他公式...?!!)并遇到了臭名昭著的ERROR 2002(HY 000):通过brew services restart mysql@5.7设置服务后,无法通过socket '/tmp/mysql.sock'(2)连接到本地MySQL服务器
问题:启动文件名称不同,但某些参数设置相同(datadir
WorkingDirectory
);我可以安全地改变这些然后...?(我还注意到,每次我通过brew services stop xxx停止每个服务时,相应的文件随后都被删除了!所以它一定来自某处)
基本上,我希望在5.7版本中使用**/opt/homebrew/var/mysql@5.7**;那我该怎么办?(特别是我也需要为5. 7建立一个新的数据库...)
由于我对这个领域很陌生,我开始在这里浏览各种主题。https://superuser.com/questions/1333504/brew-install-mysql5-7-cant-connect-to-local-mysql-server-through-socketbrew start and brew restart wont start service和其他一些,它不可避免地以recommandation结束,以完全清除所有与mysql相关的东西,并重新安装只有一个版本(这不是我想要的)。
对于mysql

me@localhost ~ % more ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>homebrew.mxcl.mysql</string>
        <key>LimitLoadToSessionType</key>
        <array>
                <string>Aqua</string>
                <string>Background</string>
                <string>LoginWindow</string>
                <string>StandardIO</string>
                <string>System</string>
        </array>
        <key>ProgramArguments</key>
        <array>
                <string>/opt/homebrew/opt/mysql/bin/mysqld_safe</string>
                <string>--datadir=/opt/homebrew/var/mysql</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>WorkingDirectory</key>
        <string>/opt/homebrew/var/mysql</string>
</dict>
</plist>

对于mysql@5.7

me@localhost ~ % more ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
/Users/me/Library/LaunchAgents/homebrew.mxcl.mysql.plist: No such file or directory
me@localhost ~ % more ~/Library/LaunchAgents/homebrew.mxcl.mysql@5.7.plist 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>KeepAlive</key>
        <true/>
        <key>Label</key>
        <string>homebrew.mxcl.mysql@5.7</string>
        <key>LimitLoadToSessionType</key>
        <array>
                <string>Aqua</string>
                <string>Background</string>
                <string>LoginWindow</string>
                <string>StandardIO</string>
                <string>System</string>
        </array>
        <key>ProgramArguments</key>
        <array>
                <string>/opt/homebrew/opt/mysql@5.7/bin/mysqld_safe</string>
                <string>--datadir=/opt/homebrew/var/mysql</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>WorkingDirectory</key>
        <string>/opt/homebrew/var/mysql</string>
</dict>
</plist>

PS:当我修改上述文件时,启动服务失败(顺便说一句,文件被覆盖...):

me@localhost ~ % brew services start mysql@5.7
Bootstrap failed: 5: Input/output error
Try re-running the command as root for richer errors.
Error: Failure while executing; `/bin/launchctl bootstrap gui/503 /Users/me/Library/LaunchAgents/homebrew.mxcl.mysql@5.7.plist` exited with 5.
w7t8yxp5

w7t8yxp51#

如果在同一操作系统上运行多个MySQL示例,则每个示例必须具有不同的配置:

  • 数据目录
  • 港口
  • 套接字文件

当MySQL服务器运行时,在plist中设置datadir。您可以使用选项设置其他选项,或者在每个示例的相应my.cnf文件中设置其他选项。
还有几个其他的选项可以在同一台计算机上运行多个MySQL服务器示例。
一个是run MySQL Server instances in Docker containers,确保为每个指定不同的配置。当我在同一台计算机上需要多个版本的MySQL时,我使用Docker。
另一种方法是使用dbdeployer,这是一个免费的工具,可以在不使用Docker的情况下运行ad hoc服务器示例。这通常用于开发或测试,但如果您需要设置副本或类似的事情,它非常有用。
请记住,一旦您在计算机上有多个示例(无论它们是否在Docker中运行),您应该指定运行客户端时要连接的端口或套接字。

相关问题