386

我正在尝试使用 Homebrew by 在 mac os 10.6 上设置 MySQL brew install mysql 5.1.52

一切顺利,我也成功了mysql_install_db
但是,当我尝试使用以下方式连接到服务器时:

/usr/local/Cellar/mysql/5.1.52/bin/mysqladmin -u root password 'mypass'

我得到:

/usr/local/Cellar/mysql/5.1.52/bin/mysqladmin: 连接到'localhost'的服务器
失败的错误:'拒绝用户'root'@'localhost'的访问(使用密码:否)'

我也尝试过访问mysqladmin or mysql using -u root -proot
但无论有没有密码都无法使用。

这是全新机器上的全新安装,据我所知,新安装必须无需 root 密码即可访问。我也试过:

/usr/local/Cellar/mysql/5.1.52/bin/mysql_secure_installation

但我也得到

错误 1045 (28000): 用户 'root'@'localhost' 的访问被拒绝(使用密码:否)
4

17 回答 17

741

我认为一个已经安装了旧版本的mysql的人最终会处于这个位置。我遇到了同样的问题,上述解决方案都不适合我。我修复了它:

使用 brew 的remove&cleanup命令,卸载launchctl脚本,然后删除 mysql 目录/usr/local/var,删除我现有的/etc/my.cnf(如果适用,请自行决定)并启动ctl plist

更新了 plist 的字符串。另请注意,您的备用安全脚本目录将基于您安装的 MySQL 版本。

一步步:

brew remove mysql

brew cleanup

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

sudo rm -rf /usr/local/var/mysql

然后我从头开始:

  1. 安装了mysqlbrew install mysql
  2. 运行 brew 建议的命令:(见注:下面)

    unset TMPDIR
    
    mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp
    
  3. 用命令启动mysql mysql.server start,就可以登录了

  4. 使用了备用安全脚本:

    /usr/local/Cellar/mysql/5.5.10/bin/mysql_secure_installation
    
  5. 遵循launchctlbrew 包脚本输出中的部分,例如,

    #start
    launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    
    #stop
    launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    

注意:这个--forcebrew cleanup也会清理过时的小桶,认为这是一个新的自制功能。

请注意第二个:评论者说不需要第 2 步。我不想测试它,所以 YMMV!

于 2011-06-16T20:50:48.443 回答
67

以下是详细的说明,结合了从 Mac 中删除所有 MySQL,然后按照 Sedorner 上面所写的 Brew 方式安装它:

根据技术实验室完全删除 MySQL

  • ps -ax | grep mysql
  • 停止和kill任何 MySQL 进程
  • sudo rm /usr/local/mysql
  • sudo rm -rf /usr/local/var/mysql
  • sudo rm -rf /usr/local/mysql*
  • sudo rm ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
  • sudo rm -rf /Library/StartupItems/MySQLCOM
  • sudo rm -rf /Library/PreferencePanes/My*
  • launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
  • 编辑/etc/hostconfig并删除该行MYSQLCOM=-YES-
  • rm -rf ~/Library/PreferencePanes/My*
  • sudo rm -rf /Library/Receipts/mysql*
  • sudo rm -rf /Library/Receipts/MySQL*
  • sudo rm -rf /private/var/db/receipts/*mysql*
  • sudo rm -rf /tmp/mysql*
  • 尝试运行mysql,它不应该工作

Brew install MySQL per user Sedorner from this StackOverflow answer

  • brew doctor并修复任何错误

  • brew remove mysql

  • brew cleanup

  • brew update

  • brew install mysql

  • unset TMPDIR

      mysql_install_db --verbose --user=`whoami` --basedir="$(brew --prefix mysql)" --datadir=/usr/local/var/mysql --tmpdir=/tmp # whoami is executed inline
    
  • mysql.server start

  • 运行 Brew 建议的命令,添加 MySQL,launchctl使其在启动时自动启动

mysql现在应该可以按预期工作并一直运行

神速。

于 2014-01-07T22:11:38.740 回答
45

有同样的问题。似乎设置说明或正在创建的初始表有问题。这就是我在我的机器上运行 mysqld 的方式。

如果 mysqld 服务器已经在您的 Mac 上运行,请先停止它:

launchctl unload -w ~/Library/LaunchAgents/com.mysql.mysqld.plist

使用以下命令启动 mysqld 服务器,该命令允许任何人以完全权限登录。

mysqld_safe --skip-grant-tables

然后运行mysql -u root​​which 现在应该可以让您在没有密码的情况下成功登录。以下命令应重置所有 root 密码。

UPDATE mysql.user SET Password=PASSWORD('NewPassword') WHERE User='root'; FLUSH PRIVILEGES;

现在,如果您终止 mysqld_safe 的运行副本并在不使用 skip-grant-tables 选项的情况下重新启动它,您应该能够使用mysql -u root -p刚刚设置的新密码登录。

于 2011-01-07T23:30:54.397 回答
18

如果 brew 安装了 MySQL 5.7,则该过程与以前的版本有点不同。要重置 root 密码,请执行以下操作:

sudo rm -rf /usr/local/var/mysql
mysqld --initialize

临时密码将打印到控制台,它只能用于更新 root 密码:

mysql.server start
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'my-new-password';" | mysql -uroot --password=TEMPORARY_PASSWORD
于 2015-11-25T19:11:49.333 回答
8

好的,我遇到了同样的问题并解决了。由于某种原因,在使用 Homebrew 安装 mysql 时,mysql_secure_installation 脚本无法开箱即用,所以我手动完成了。在 CLI 上输入

mysql -u root

那应该让你进入mysql。现在执行以下操作(取自 mysql_secure_installation):

UPDATE mysql.user SET Password=PASSWORD('your_new_pass') WHERE User='root';
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%'
DROP DATABASE test;
FLUSH PRIVILEGES;

现在退出并返回mysql:mysql -u root -p

于 2010-12-26T05:03:14.887 回答
8

我刚才也有同样的问题。如果您按照步骤操作,如果我没记错的话brew info mysql,它看起来应该是 root 密码。new-password我看到的和你看到的一样。这篇文章对我帮助最大。

原来我没有为我创建任何帐户。当我在运行后登录mysqld_safe并且没有select * from user;返回任何行时。我在运行中打开了 MySQLWorkbench,mysqld_safe并添加了一个root具有我期望的所有权限的帐户。现在这对我来说效果很好。

于 2011-01-07T04:18:54.287 回答
7

如果已经安装了mysql

完全停止mysql。

  1. mysql.server stop<-- 可能需要根据您的版本进行编辑
  2. ps -ef | grep mysql<-- 列出名称中带有 mysql 的进程
  3. kill [PID]<-- 按 PID 杀死进程

删除文件。上面的说明很好。我会补充:

  1. sudo find /. -name "*mysql*"
  2. 根据您的判断,rm -rf这些文件。请注意,许多程序都有您不想删除的 mysql 驱动程序。例如,不要删除 PHP 安装目录中的内容。删除它自己的 mysql 目录中的东西。

安装

希望你有自制软件。如果没有,请下载它。

我喜欢以 root 身份运行 brew,但我认为您不必这样做。编辑 2018:您不能再以 root 身份运行 brew

  1. sudo brew update
  2. sudo brew install cmake<-- 对mysql的依赖,有用
  3. sudo brew install openssl<-- 对mysql的依赖,有用
  4. sudo brew info mysql<-- 浏览一下...它让您对接下来会发生什么有所了解
  5. sudo brew install mysql --with-embedded; say done<-- 使用嵌入式服务器安装 mysql。完成后告诉你(我的安装花了 10 分钟)

然后

  1. sudo chown -R mysql /usr/local/var/mysql/<-- 在我运行此命令之前,mysql 对我不起作用
  2. sudo mysql.server start<--再一次,确切的语法可能会有所不同
  3. 在 mysql ( http://dev.mysql.com/doc/refman/5.7/en/create-user.html ) 中创建用户。请记住为 root 用户添加密码。
于 2016-03-29T20:38:53.357 回答
3

酿造信息mysql

mysql: stable 5.6.12 (bottled)
http://dev.mysql.com/doc/refman/5.6/en/
Conflicts with: mariadb, mysql-cluster, percona-server
/usr/local/Cellar/mysql/5.6.12 (9363 files, 353M) *
  Poured from bottle
From: https://github.com/mxcl/homebrew/commits/master/Library/Formula/mysql.rb
==> Dependencies
Build: cmake
==> Options
--enable-debug
    Build with debug support
--enable-local-infile
    Build with local infile loading support
--enable-memcached
    Enable innodb-memcached support
--universal
    Build a universal binary
--with-archive-storage-engine
    Compile with the ARCHIVE storage engine enabled
--with-blackhole-storage-engine
    Compile with the BLACKHOLE storage engine enabled
--with-embedded
    Build the embedded server
--with-libedit
    Compile with editline wrapper instead of readline
--with-tests
    Build with unit tests
==> Caveats
A "/etc/my.cnf" from another install may interfere with a Homebrew-built
server starting up correctly.

To connect:
    mysql -uroot

To reload mysql after an upgrade:
    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

mysql.service 启动

. ERROR! The server quit without updating PID file (/var/run/mysqld/mysqld.pid).

或 mysql -u root

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

我正在寻找解决方案一段时间,但我无法解决我的问题。我在 stackoverflow.com 中尝试了几种解决方案,但这对我没有帮助。

于 2013-07-27T23:09:48.863 回答
3

TL;博士

安装 Brew 后,MySQL 服务器可能无法运行。尝试brew services start mysql或只是mysql.server start如果您不希望 MySQL 作为后台服务运行。

全文:

我刚刚在运行 Sierra 的新 MacBook Pro 上安装了 MySQL (stable) 5.7.17,运行时也出现错误mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root: 
Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

说什么?

根据 Brew 的安装信息,mysql_secure_installation应该提示我... 确保安装安全。我认为 MySQL 服务器可能没有运行,这是正确的。跑步brew services start mysql,然后mysql_secure_installation像魅力一样工作。

于 2017-01-16T21:21:24.350 回答
3

家酿

  1. 首先,确保您安装了自制软件
  2. 运行brew doctor并解决任何自制软件希望您修复的问题
  3. brew install mysql
  4. brew services restart mysql
  5. mysql.server start
  6. mysql_secure_installation
于 2020-10-07T05:38:25.780 回答
2

只是在以前的答案中添加一些内容-从 MySql 5.6 升级到 MySql 8.0 时,我按照此处提供的步骤进行了彻底卸载,但出现以下错误

2019-11-05T07:57:31.359304Z 0 [ERROR] [MY-000077] [Server] /usr/local/Cellar/mysql/8.0.18/bin/mysqld: Error while setting value 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION' to 'sql_mode'.
2019-11-05T07:57:31.359330Z 0 [ERROR] [MY-013236] [Server] The designated data directory /usr/local/var/mysql is unusable. You can remove all files that the server added to it.
2019-11-05T07:57:31.359413Z 0 [ERROR] [MY-010119] [Server] Aborting
2019-11-05T07:57:31.359514Z 0 [Note] [MY-010120] [Server] Binlog end

我花了一些时间才弄清楚。在这里找到了线索: https ://discourse.brew.sh/t/clean-removal-of-mysql/2251

所以,我的问题的关键是卸载后删除 /usr/local/etc/my.cnf 文件。在最后一步之后,MySql 终于开始工作了。

于 2019-11-06T11:09:30.640 回答
2

这是 MySQL 5.7 的更新

重击--版本
GNU bash,版本 4.4.12(1)-release (x86_64-apple-darwin17.0.0)
版权所有 (C) 2016 Free Software Foundation, Inc.
许可 GPLv3+:GNU GPL 版本 3 或更高版本

这是免费软件;您可以自由更改和重新分发它。
在法律允许的范围内,不提供任何保证。

#=========================================
酿造--版本
自制 1.7.6
Homebrew/homebrew-core(git 修订版 eeb08;最后一次提交 2018-09-27)
Homebrew/homebrew-cask (git revision c9f62; last commit 2018-09-27)

#=========================================
mysql --版本
mysql Ver 14.14 Distrib 5.7.23,适用于 osx10.13 (x86_64) 使用 EditLine 包装器

#=========================================
system_profiler SPSoftwareDataType
软件:

    系统软件概述:

      系统版本:macOS 10.13.3 (17D47)
      内核版本:达尔文 17.4.0
      启动卷:Macintosh HD
      启动模式:正常
      计算机名称:EdisonMacHomeBj
      用户名:爱迪生(爱迪生)
      安全虚拟内存:已启用
      系统完整性保护:已禁用
      开机时间:6天23:13
冲泡删除mysql@5.7
冲泡清理
mv /usr/local/var/mysql /usr/local/var/mysql.bak
酿造安装mysql@5.7
rm -rf /usr/local/var/mysql

#=========================================
mysqld --初始化
2018-09-28T04:54:06.526061Z 0 [警告] 带有隐式 DEFAULT 值的 TIMESTAMP 已弃用。请使用 --explicit_defaults_for_timestamp 服务器选项(有关详细信息,请参阅文档)。
2018-09-28T04:54:06.542625Z 0 [警告] 设置 lower_case_table_names=2 因为 /usr/local/var/mysql/ 的文件系统不区分大小写
2018-09-28T04:54:07.096637Z 0 [警告] InnoDB:创建了新的日志文件,LSN=45790
2018-09-28T04:54:07.132950Z 0 [警告] InnoDB:创建外键约束系统表。
2018-09-28T04:54:07.196824Z 0 [警告] 没有找到现有的 UUID,所以我们假设这是第一次启动此服务器。生成新的 UUID:87cf2f10-c2da-11e8-ac2d-ba163df10130。
2018-09-28T04:54:07.224871Z 0 [警告] Gtid 表尚未准备好使用。无法打开表“mysql.gtid_executed”。
2018-09-28T04:54:07.366688Z 0 [警告] CA 证书 ca.pem 是自签名的。
2018-09-28T04:54:07.457954Z 1 [注意] 为root@localhost生成一个临时密码:kq3K=JR8;GqZ

#=========================================
mysql_secure_installation -uroot -p"kq3K=JR8;GqZ"
mysql_secure_installation:[警告] 在命令行界面上使用密码可能是不安全的。

保护 MySQL 服务器部署。


用户帐户 root 的现有密码已过期。请设置新密码。

新密码:

重新输入新的密码:

VALIDATE PASSWORD PLUGIN 可用于测试密码
并提高安全性。它检查密码的强度
并允许用户只设置那些密码
足够安全。你想设置验证密码插件吗?

按 y|Y 表示是,任何其他键表示否:n
使用现有的 root 密码。
更改root密码?(((按 y|Y 表示是,任何其他键表示否):y

新密码:

重新输入新的密码:
默认情况下,MySQL 安装有一个匿名用户,
允许任何人无需登录 MySQL
为他们创建的用户帐户。这仅适用于
测试,并使安装更顺畅。
您应该在进入生产之前删除它们
环境。

移除匿名用户?(按 y|Y 表示是,任何其他键表示否):y
成功。


通常,应该只允许 root 从
'本地主机'。这确保了有人无法猜测
来自网络的root密码。

远程禁止root登录?(按 y|Y 表示是,任何其他键表示否):n

 ...跳过。
默认情况下,MySQL 带有一个名为“test”的数据库,
任何人都可以访问。这也仅用于测试,
并且应该在进入生产之前被删除
环境。


删除测试数据库并访问它?(按 y|Y 表示是,任何其他键表示否):n

 ...跳过。
重新加载权限表将确保所有更改
到目前为止所做的将立即生效。

现在重新加载权限表?(按 y|Y 表示是,任何其他键表示否):y
成功。

全部完成!
于 2018-09-28T07:05:44.347 回答
1

尝试通过授予 mysql 的授予权限命令

于 2010-12-05T14:12:09.823 回答
1

我尝试重新启动mysql后遇到了同样的问题。

为方便起见,我在 .profile 中使用以下两个别名

alias mysql-stop='launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist'
alias mysql-start='launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist' 

停止 mysql 然后尝试重新启动后,我遇到了您遇到的问题。我查看了launchctl load,它报告了“没有找到加载”错误。

快速搜索后,我发现了这个..

http://www.daveoncode.com/2013/02/01/solve-mac-osx-launchctl-nothing-found-to-load-error/

所以我更新了我mysql-start的别名如下

alias mysql-start='launchctl load -w -F ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist'

这解决了我的问题,可能对您有用。

于 2013-08-09T13:00:30.087 回答
1

将 brew 与最新版本的 mysql 和 yosemite 一起使用时,上述答案(或我在其他地方看到的几十个答案中的任何一个)都不适合我。我最终通过 brew 安装了不同的 mysql 版本。

通过说(例如)指定旧版本

brew install mysql56

为我工作。希望这可以帮助某人。这是一个令人沮丧的问题,我觉得自己永远被困住了。

于 2015-11-22T22:53:15.567 回答
0

Mysql 的“基本路径”存储在/etc/my.cnf其中,当您进行 brew 升级时不会更新。只需打开它并更改 basedir 值

例如,改变这个:

[mysqld]
basedir=/Users/3st/homebrew/Cellar/mysql/5.6.13

指向新版本:

[mysqld]
basedir=/Users/3st/homebrew/Cellar/mysql/5.6.19

使用以下命令重新启动 mysql:

mysql.server start
于 2014-07-09T07:16:46.127 回答
0

试试我为 MariaDB 提供的解决方案,它也适用于 MySQL:

MacOSX homebrew mysql root密码

简而言之,尝试使用您的用户名登录!不是根。

尝试使用与您的 MacOS 帐户用户名相同的名称,例如 johnsmit。

要以 root 身份登录,请发出:

mysql -u johnsmit
于 2020-07-21T20:01:50.067 回答