Mac brew安装的MySQL忘记密码

本文详细介绍了如何在Mac上通过Homebrew管理MySQL服务,包括查找配置文件、临时禁用权限检查、修改root用户密码以及应对validate_password插件的密码策略限制。通过调整密码策略和更新root用户的主机与密码,成功重置了MySQL的root账户。

1、查找brew 安装MySQL配置文件

使用命令查找 MySQL 的配置启动文件列表:

mysqld --help --verbose | less

在这里插入图片描述
依次查找,发现文件:/usr/local/etc/my.cnf 存在!

2、修改配置文件

vim /usr/local/etc/my.cnf

[mysqld]下添加
skip-grant-tables

brew services restart mysql
Stopping `mysql`... (might take a while)
==> Successfully stopped `mysql` (label: homebrew.mxcl.mysql)
==> Successfully started `mysql` (label: homebrew.mxcl.mysql)

3、进入修改

mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 7
Server version: 8.0.31 Homebrew

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
### 设置root账户为空密码
mysql> UPDATE user SET authentication_string='' where user='root';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0
### 刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

mysql> exit;

3、重新编辑配置文件,将skip-grant-tables去除后重启MySQL

4、设置新密码

mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.31 Homebrew

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
### 提示报错
### 原因:validate_password密码校验插件,导致要修改的密码不符合密码策略的要求。
mysql> ALTER USER 'root'@'%' IDENTIFIED BY '123456';
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

### 查看当前的密码策略是:

mysql> show variables like 'validate%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password.check_user_name    | ON     |
| validate_password.dictionary_file    |        |
| validate_password.length             | 8      |
| validate_password.mixed_case_count   | 1      |
| validate_password.number_count       | 1      |
| validate_password.policy             | MEDIUM |
| validate_password.special_char_count | 1      |
+--------------------------------------+--------+

### 字典描述
validate-password=ON/OFF/FORCE/FORCE_PLUS_PERMANENT: 决定是否使用该插件(及强制/永久强制使用)。
validate_password.dictionary_file:插件用于验证密码强度的字典文件路径。
validate_password.length:密码最小长度。
validate_password.mixed_case_count:密码至少要包含的小写字母个数和大写字母个数。
validate_password.number_count:密码至少要包含的数字个数。
validate_password.policy:密码强度检查等级,0/LOW、1/MEDIUM、2/STRONG。
validate_password.special_char_count:密码至少要包含的特殊字符数。
其中,关于validate_password.policy:密码强度检查等级:
0/LOW:只检查长度。
1/MEDIUM:检查长度、数字、大小写、特殊字符。
2/STRONG:检查长度、数字、大小写、特殊字符字典文件。

### 修改密码策略规则

mysql> set global validate_password.policy=0;
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'validate%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password.check_user_name    | ON    |
| validate_password.dictionary_file    |       |
| validate_password.length             | 8     |
| validate_password.mixed_case_count   | 1     |
| validate_password.number_count       | 1     |
| validate_password.policy             | LOW   |
| validate_password.special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.01 sec)


mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'smile@123';
ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'%'


mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
4 rows in set (0.00 sec)

mysql> update user set host = '%' where host = 'localhost' and user = 'root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
# Default Homebrew MySQL server config


mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
+-----------+------------------+
4 rows in set (0.01 sec)

mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'smile@123';
Query OK, 0 rows affected (0.01 sec)

mysql> quit
Bye


<think>嗯,用户问的是如何在MacBook上通过Homebrew安装MySQL后,用终端打开MySQL客户端。首先,我得回忆一下Homebrew安装MySQL的步骤,以及安装后的常见操作流程。记得Homebrew安装软件通常会把可执行文件放在/usr/local/bin或者别的路径下,可能需要确认一下MySQL安装路径是否正确。 首先,用户已经用Homebrew安装MySQL,那么接下来需要启动MySQL服务。可能用户不知道安装后服务默认是否启动,所以需要告诉他们启动服务的命令,比如brew services start mysql。如果服务没启动,直接连接客户端可能会失败。 然后,安装完成后,可能MySQL的root用户默认没有密码,或者有一个临时生成的密码。这时候可能需要告诉用户如何获取初始密码,或者如何设置新密码。比如,有些安装方式会在安装过程中生成一个临时密码,保存在某个日志文件中,或者需要运行mysql_secure_installation来进行安全设置。 接下来,用户需要打开MySQL客户端。通常的命令是mysql -u root -p,这会提示输入密码。但可能需要根据具体情况调整,比如如果用户创建了其他用户,或者更改了认证方式。尤其是MySQL 8.0之后,默认的身份验证插件可能是caching_sha2_password,有时会导致旧客户端连接问题,不过Homebrew安装的可能不会有这个问题,但需要注意。 另外,用户可能会遇到权限问题,比如无法以root身份登录,可能需要sudo或者修改权限。或者安装后没有正确设置PATH,导致找不到mysql命令。这时候需要检查是否将MySQL的bin目录添加到环境变量中,或者使用绝对路径来执行命令,比如/usr/local/opt/mysql/bin/mysql。 可能还需要提醒用户,如果安装的是不同版本,路径可能会有变化,比如mysql@5.7和mysql@8.0的区别,这时候brew services启动的服务名和路径可能不同,需要相应调整命令。 另外,参考引用里的信息,比如引用[2]提到用brew services stop mysql来停止服务,那么启动应该是brew services start mysql。引用[3]提到创建mysql用户和组,但Homebrew安装可能已经处理了这些步骤,用户可能不需要手动操作。引用[4]显示版本升级到8.2.0,所以可能需要确认当前安装的版本,但一般来说Homebrew安装的是较新版本,但用户可能安装的是其他版本,需要根据实际情况调整命令。 还有,用户可能在安装后直接运行mysql命令,但发现命令不存在,这可能是因为PATH没有配置好。这时候需要告诉用户如何将MySQL的bin目录添加到PATH中,或者使用绝对路径执行。 总结步骤应该是: 1. 启动MySQL服务:brew services start mysql 2. 确认服务状态:brew services list 3. 连接MySQL客户端:mysql -u root -p (可能需要输入密码,初始密码可能需要查找或设置) 4. 如果遇到权限问题,可能需要运行安全脚本或者重置密码。 需要确保每个步骤都清晰,并且考虑到可能的问题和解决办法,比如忘记密码或者服务启动失败的情况。同时,参考提供的引用内容,如果有相关的安装步骤或命令,可以引用,比如引用[3]中的用户和组设置可能已经由Homebrew处理,用户不需要手动操作。 可能还需要提到,如果安装的是特定版本,比如mysql@5.7,则服务名可能不同,启动命令可能需要调整为brew services start mysql@5.7,对应的客户端路径也可能不同,比如/usr/local/opt/mysql@5.7/bin/mysql。 最后,生成的相关问题可以包括如何设置root密码、如何停止服务、如何卸载MySQL等常见后续操作。</think>### 如何在MacBook上通过Homebrew安装MySQL后打开MySQL客户端 #### 步骤详解 1. **启动MySQL服务** 安装完成后,MySQL服务默认不会自动启动。需在终端执行以下命令: ```bash brew services start mysql ``` 若安装的是特定版本(如`mysql@5.7`),需替换为对应服务名: ```bash brew services start mysql@5.7 ``` 验证服务状态: ```bash brew services list ``` 若状态显示为`started`,则服务已运行[^2]。 2. **连接MySQL客户端** - **默认无密码登录(仅限初次)** 初次安装后,可能允许直接以`root`用户无密码登录: ```bash mysql -u root ``` - **使用密码登录** 若已设置密码(如通过`mysql_secure_installation`),需添加`-p`参数: ```bash mysql -u root -p ``` 输入密码后即可进入MySQL命令行界面。 3. **处理常见问题** - **找不到`mysql`命令** 确保MySQL的二进制文件路径已加入环境变量: ```bash echo 'export PATH="/usr/local/opt/mysql/bin:$PATH"' >> ~/.zshrc source ~/.zshrc ``` 或使用绝对路径: ```bash /usr/local/opt/mysql/bin/mysql -u root ``` - **忘记密码** 重置密码需停止服务并使用安全模式: ```bash brew services stop mysql mysqld_safe --skip-grant-tables & mysql -u root ``` 在MySQL中执行密码更新后重启服务[^3]。 #### 验证连接 成功连接后,终端会显示MySQL版本信息: ```bash mysql> SELECT VERSION(); +-----------+ | VERSION() | +-----------+ | 8.2.0 | +-----------+ ``` 若版本与安装一致(如引用[4]中的`8.2.0`),则说明配置正确[^4]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值