Mac上MySQL root 密码忘记或权限错误的解决办法(绝对能行的方法)(转)

本文提供了一种在Mac系统上解决MySQL root权限问题的方法。通过安装mysqlworkbench并利用特定命令绕过密码验证,实现对root账户密码的重置。

不管什么原因吧,忘了密码也好,改了权限也好,导致root登录不上了。

    以下是还原root权限和更改root密码的最便捷方法。

    1:装mysql workbench 。可视化界面直接操作。(连接mysql server 的客户端)

    2:苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服务(用苹果系统的应该都懂)

    3:进入终端

    输入:

    cd /usr/local/mysql/bin/      (苹果系统下mysql server的安装地址)

    回车后 登录管理员权限

    sudo su

    回车后输入以下命令来禁止mysql验证功能

    ./mysqld_safe –skip-grant-tables &

     PS:也可以直接使用下面的命令

         sudo ./mysqld_safe -skip-grant-tables &

    回车后mysql会自动重启(在系统偏好里弹出的Mysql界面,显示运行了,也就是running),重启好了之后进入mysql workbench,这时候就可以不需要密码登录。直接修改root密码后重新启动MySQL即可。

 

原链接:http://www.shangxueba.com/jingyan/2199645.html

 

 

<think> 我们正在处理MySQL 5.7忘记root密码的问题。根据引用内容,我们可以总结出以下步骤: 注意:MySQL 5.7版本中,`user`表已经去除了`password`字段,改用`authentication_string`字段来存储密码。 步骤概述: 1. 停止MySQL服务(不同系统方法不同) 2. 以跳过权限表的方式启动MySQL(无密码验证) 3. 使用SQL语句更新root密码(注意字段名) 4. 刷新权限 5. 重启MySQL服务 具体步骤: 步骤1:停止MySQL服务 - 在Mac上,可以通过“系统偏好设置”停止,者使用命令: sudo /usr/local/mysql/support-files/mysql.server stop - 在Linux上,可以使用: sudo systemctl stop mysqld sudo service mysql stop 步骤2:以安全模式(跳过权限表)启动MySQL - 进入MySQL的bin目录(根据安装位置可能不同): cd /usr/local/mysql/bin - 执行: sudo ./mysqld_safe --skip-grant-tables & 注意:如果出现“command not found”,可能需要使用绝对路径,者确保该目录在系统PATH中。 步骤3:更新root密码 - 新开一个终端窗口,无需密码登录MySQLmysql -u root - 在MySQL命令行中执行以下语句(注意:MySQL 5.7中,密码字段为authentication_string): UPDATE mysql.user SET authentication_string=PASSWORD('你的新密码') WHERE User='root'; FLUSH PRIVILEGES; exit; 注意:在MySQL 5.7.6及以上版本,`PASSWORD()`函数已被弃用,可以使用以下语句: ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; 步骤4:重启MySQL服务 - 首先,停止之前以安全模式启动的MySQL(可以通过杀死进程的方式,者使用服务停止命令) - 然后正常启动MySQL服务。 步骤5:使用新密码登录 mysql -u root -p 注意:如果修改密码后登录时提示密码过期,则需要再次登录(使用新密码)并设置新密码: ALTER USER 'root'@'localhost' IDENTIFIED BY '更新的密码'; FLUSH PRIVILEGES; 但是,根据引用[3]和[4],在MySQL 5.7中,我们也可以使用`ALTER USER`语句来修改密码,这种方法可能更直接。 因此,在跳过权限表启动后,我们也可以这样修改密码(推荐): FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'; FLUSH PRIVILEGES; 为什么需要执行两次`FLUSH PRIVILEGES`?实际上,在跳过权限表启动后,第一次FLUSH是为了让权限表重新加载(尽管我们跳过了权限表,但当我们执行修改权限的操作时,最好先刷新),然后执行ALTER USER,之后再刷新一次确保修改生效。 然而,通常在执行ALTER USER之前,我们可能不需要刷新,因为跳过权限表的情况下,权限表没有被加载。但为了确保安全,刷新一下也无妨。 另外,如果遇到authentication_string字段修改后还是无法登录,可能是由于密码策略问题,可以尝试设置一个复杂密码。 总结步骤(通用版): 1. 停止MySQL服务。 2. 使用`--skip-grant-tables`选项启动MySQL服务。 3. 连接到MySQL服务器(无需密码)。 4. 执行以下命令之一: UPDATE mysql.user SET authentication_string=PASSWORD('newpassword') WHERE User='root' AND Host='localhost'; 者(推荐) ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword'; 5. 执行`FLUSH PRIVILEGES;`(如果使用UPDATE语句则必须执行,ALTER USER则不一定需要,但执行也无妨)。 6. 退出MySQL,然后停止MySQL服务(者杀死进程),再以正常方式启动MySQL服务。 注意:在MySQL 5.7.5及以下版本,可以使用PASSWORD函数,但更高版本已经移除了该函数,因此使用ALTER USER是更通用的方法。 如果在执行UPDATEALTER USER时遇到错误,请检查是否选择了正确的数据库(use mysql;)。 另外,如果使用ALTER USER语句修改密码,可以避免直接操作user表,更安全。 由于用户提到是MySQL 5.7,所以以上方法适用。 现在,我们将按照步骤写出详细的解决方法。 </think> ### MySQL 5.7 忘记 root 密码的解决方法 以下是完整解决方案,**适用于 macOS/Linux 系统**,按步骤操作即可恢复 root 访问权限: --- #### 1. 停止 MySQL 服务 ```bash # macOS sudo /usr/local/mysql/support-files/mysql.server stop # Linux (systemd) sudo systemctl stop mysqld ``` --- #### 2. 以安全模式启动 MySQL(跳过权限验证) ```bash cd /usr/local/mysql/bin sudo ./mysqld_safe --skip-grant-tables --skip-networking & ``` > 注意:如果出现 `command not found`,请使用[路径修复方法](#)[^1] --- #### 3. 无密码登录 MySQL ```bash # 新开终端窗口执行 mysql -u root ``` --- #### 4. 重置 root 密码(关键步骤) ```sql /* 清空旧密码 */ UPDATE mysql.user SET authentication_string = '', password_expired = 'N' WHERE user = 'root'; /* 刷新权限 */ FLUSH PRIVILEGES; /* 退出 */ EXIT; ``` --- #### 5. 重启 MySQL 并设置新密码 ```bash # 终止安全模式进程 sudo killall mysqld # 正常启动服务 sudo /usr/local/mysql/support-files/mysql.server start # 免密登录设置新密码 mysql -u root ``` ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY '您的新密码'; FLUSH PRIVILEGES; ``` --- #### 验证登录 ```bash mysql -u root -p # 输入新密码 ``` --- ### 常见问题处理 | 问题现象 | 解决方案 | |---------|----------| | `--skip-grant-tables` 启动失败 | 检查 `mysqld_safe` 路径[^1] | | `authentication_string` 修改无效 | 先清空密码再重置[^4] | | 登录提示密码过期 | 执行 `SET PASSWORD` 时添加 `PASSWORD EXPIRE NEVER` | | 忘记刷新权限 | 必须执行 `FLUSH PRIVILEGES`[^2] | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值