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

2025 年 5 月 6 日
 KaneW95

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

5554 次点击
所在节点    程序员
65 条回复
AlbertGuo
2025 年 5 月 7 日
@KaneW95 brew info 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 -u root

To start mysql now and restart at login:
brew services start mysql
Or, if you don't want/need a background service you can just run:
/opt/homebrew/opt/mysql/bin/mysqld_safe --datadir\=/opt/homebrew/var/mysql
ogzo
2025 年 5 月 7 日
MAC 下 MySql8.0.17 优雅重置密码: https://313390.xyz/index.php/archives/55/
cslive
2025 年 5 月 7 日
还是 docker 快,说是手动安装的,我从 mysql 官网下的不带安装引导的,还要手动配置,安装一遍就受够了,后面知道了 docker 那是真的快
billgong
2025 年 5 月 7 日
刚刚在虚拟机里重新试了一下 Homebrew 的 MySQL 和 MariaDB ,似乎 MySQL 9 的策略又变了 - 默认 root 账户空密码,直接 mysql 或 mysql -uroot 就可以登入,不需要用 sudo ,默认通过 socket 连接。MariaDB 的本地 root 空密码则需要通过 sudo 才行。

可能是因为 MySQL 还是希望用户通过 mysql_secure_installation 进行初始设置,而 MariaDB 已经初始化过了,cavaets 也没提到使用 mysql_secure_installation 初始化、改密码、去除匿名账户和 test 数据库等等
pike0002
2025 年 5 月 7 日
brk43202
2025 年 5 月 7 日
@julyclyde 有先进的工具不用还在这和别人争辩茴的四种写法
Jh1n
2025 年 5 月 7 日
看了评论感觉 V 站技术水平不咋高啊
QlanQ
2025 年 5 月 7 日
看了评论感觉 V 站技术水平不咋高啊
TimPeake
2025 年 5 月 7 日
看了评论感觉 V 站技术水平不咋高啊
zengguibo
2025 年 5 月 7 日
你安装的时候看日志,日志里有提示的,不行就卸载后重装
jamesjammy061
2025 年 5 月 7 日
orbstack 跑 docker 吧,brew 的 pgsql 和 mysql 我一般用命令行
qqjt
2025 年 5 月 7 日
这个问题得有十几年了吧,网上的资料不要太多哦
GhostYs
2025 年 5 月 7 日
为啥不查官方文档呢?

https://dev.mysql.com/doc/refman/8.4/en/problems-connecting.html

> After a fresh installation, if you try to log on to the server as root without using a password, you might get the following error message.(全新安装后,如果您尝试以不使用密码的方式登录服务器 root ,则可能会收到以下错误消息。)
```
$> mysql -u root
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
```

> If you get the following error, it means that you are using an incorrect root password (如果出现以下错误,则表示您使用的 root 密码不正确)
```
$> mysqladmin -u root -pxxxx ver
Access denied for user 'root'@'localhost' (using password: YES)
```
julyclyde
2025 年 5 月 7 日
@billgong 首先,tcp 连接无视你是否 sudo ; unix domain socket 连接虽然理论上存在 sock 文件 mode 的问题,但经过查看代码,发现 mysqld 会特地把 sock 文件给 777 mode ,所以其实 sudo 也不是必须的。在此前提下,sudo 带来的其他副作用(比如.mysql_history 文件的路径/权限问题)是不可忽视的。不应该教唆使用 sudo

你既然说“root 空密码就得通过 uid 0 连接”,那你应该给出实证。

mariadb 必须 sudo 是咋回事呢? sock 文件的 mode 变了吗?

另外你提到的 scoop 免疫是什么意思?
julyclyde
2025 年 5 月 7 日
@brk43202 你并没有掌握先进的工具啊
你以为工具能解决一切
但实际上还是要投入精力学习的
你以为的只是宏大的各种现实情况其中的一个个例而已
wynemo
2025 年 5 月 7 日
用一个 orbstack 装一个 mysql 的 docker 镜像吧
cabing
2025 年 5 月 7 日
deepseek 问下。
saintatgod
2025 年 5 月 7 日
这不就是安装时候没有注意 mysql 的默认密码吗,找不到就重新设吧,不知道这个问题是不是解决了。MySQL 8.0 以上,用下面这个步骤应该没有什么问题
1. ```brew services stop mysql``` 停掉 MySQL 服务
2. ```mysqld_safe --skip-grant-tables &``` 启动 mysql
3. ```mysql -uroot ``` 就可以无密码进入了
4. ```
-- 刷新权限
FLUSH PRIVILEGES;
-- 重置 root 用户密码(替换为新密码,如 '123456')
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
-- 刷新权限
FLUSH PRIVILEGES;
```
5. ``` exit ``` 退出 mysql
6. ``` ps aux | grep mysqld_safe ``` 找到进程号,用 ``` kill -9 进程号 ``` 干掉进程
7. ``` brew services start mysql ``` 启动 MySQL 服务,然后正常进入就可以。
julyclyde
2025 年 5 月 7 日
@saintatgod kill 数据库的时候建议不要-9
偶尔会死的很难看
webcape233
2025 年 5 月 7 日
跑一下 mysql_secure_installation
它会提示
是否设置 root 密码
是否关闭远程 root 登录
是否删除匿名帐号
是否删除测试数据库

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

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

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

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

© 2021 V2EX