mac 使用 brew 安装 mysql,登录时报错: ERROR 1045: Access denied for user ‘root‘@‘localhost‘ (using password: YES)

2025 年 5 月 6 日
 KaneW95

这是什么原因呢,网上找了好多方法都没解决,是不是权限有问题,我看了进程,mysql 不是在 root 账户上的,有没有大佬解答一下

5554 次点击
所在节点    程序员
65 条回复
julyclyde
2025 年 5 月 6 日
@ZeekChatCom 对啊,事实上没什么关联

教唆别人 sudo 的是
@billgong 不是我啊
ZeekChatCom
2025 年 5 月 6 日
@julyclyde 另外 mysql 命令,默认使用的是 unix domain socket 通信, 此时受文件权限影响,sudo 可能是有必要的。你说的 3306 端口,那意思是百分百使用 TCP 套接字了?明显你是不对的。
julyclyde
2025 年 5 月 6 日
@ZeekChatCom 公共服务的 sock 文件都是 666 的。

3306 这个是我的问题。我应该说“在 mysql 的通信协议里出示的用户名”
ZeekChatCom
2025 年 5 月 6 日
@julyclyde #21 @billgong 教别人使用 sudo 没有问题,有问题的是你。
julyclyde
2025 年 5 月 6 日
@ZeekChatCom 教唆 sudo 显然是有错的,首先混淆了执行 mysql 客户端的身份和 mysql 通信协议里的身份
其次会导致.mysql_history 文件的路径不对

sock 文件的权限不需要考虑,都是 666
ZeekChatCom
2025 年 5 月 6 日
@julyclyde #23 公共服务的 sock 文件都是 666 的。这句话不完全正确。没有这个约定,只是通常比较宽松。也只是通常。
ZeekChatCom
2025 年 5 月 6 日
@julyclyde 你再读一读 @billgong 在 #10 的发言。一点毛病都没有。
julyclyde
2025 年 5 月 6 日
@ZeekChatCom 嗯,你说的对

我这里遭遇奇怪现象了。我看了看我自己的,sock 文件 0777 ,但是 systemd show 显示 UMask 才 0022
我先研究研究我自己的烂摊子去吧
julyclyde
2025 年 5 月 6 日
@ZeekChatCom
@billgong 教唆 sudo 一定是错的。我坚持
MoYi123
2025 年 5 月 6 日
brew 装的 mysql 确实挺神秘的, 我几个月前想给家里的 kodi 配置 mysql 同步也搞了好久.
SDYY
2025 年 5 月 6 日
mysql5.x 和 8.+ 密码加密方式不一样导致的吧
julyclyde
2025 年 5 月 6 日
@SDYY 旧数据升级才会发生加密方式不同的问题
这里问的应该是新装
lscho
2025 年 5 月 6 日
不是,你们用 brew 装完包都不看提示的吗? mysql 装完会提示

We've installed your MySQL database without a root password. To secure it run:
mysql_secure_installation

MySQL is configured to only allow connections from localhost by default

To connect run:
mysql -uroot

事后忘记了,用 brew info xxx 也能看到。


用 mysql_secure_installation 命令设置一下密码就行了啊。


brew 不一定是万能的/一键的,很多包装完都要根据提示初始化或者设置一下权限、加一下环境变量之类的。
julyclyde
2025 年 5 月 6 日
mysql_server 代码比较复杂,我也没读过啊。简单 grep 了一下
在 sql/conn_handler/socket_connection.cc 文件中有一句 umask(0)应该是决定了 sock 文件 0777 的因素
所以本地访问 mysql 必然是不需要 sudo 的
davidqw
2025 年 5 月 6 日
为何不用官网安装包呢,一步步自定义配置比较省心,系统设置里也有面板来配置和开启/关闭服务器 https://dev.mysql.com/downloads/mysql/
nutting
2025 年 5 月 6 日
我用 orbstack 的 docker 装 arm 的 mysql ,数据映射出来,很香,同步到别的机器也很方便
billgong
2025 年 5 月 7 日
@julyclyde #25 用 sudo 是对的,因为我说了通过 TCP 用 root 空密码默认有限制,而 mysql 命令是通过 socket 连接的,root 空密码就得通过 uid 0 连接。

你完全可与取消限制,Homebrew 的 cavets 说了,可以运行 mysql_secure_installation 配置
billgong
2025 年 5 月 7 日
@julyclyde Homebrew 环境下“教唆” sudo 确实不对,但我没“教唆”
Homebrew 也不像 scoop 那样能完全免疫 sudo 的使用,要实事求是
billgong
2025 年 5 月 7 日
@SDYY #31 MySQL 8 刚开始的时候有这个问题,后来 Homebrew distro 好像又单独从 sha 换回 native 了,默认没这个问题了
billgong
2025 年 5 月 7 日
@lscho #33 相信我,绝大多数人运行命令都不看输出

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/1130005

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX