数据库之mac上mysql root密码忘记或权限错误的解决办法

本文介绍了一种在Mac上重置MySQL root密码的方法,通过使用终端命令行工具以安全模式启动MySQL并更改密码。

以下方法亲测有效,过程使用的工具只有mac的终端无需workbench

当我们通过终端连接mysql数据库时候我们会看到这样的信息

ERROR 1045: Access denied for user: 'root@localhost' (Using 
password: NO)

或者

ERROR 1045: Access denied for user: 'root@localhost' (Using 
password: YES)

解决上面错误的方法之一就是重新设置我们的mysql的root密码。

1.在终端输入下面命令关闭正在运行的mysql,如果msyql没有运行可以跳过,需要输入mysql的密码。如果mysql密码忘记了,可以直接通过系统偏好设置里面关闭!

/usr/local/mysql/bin/mysqladmin -u root -p shutdown

系统便好设置关闭如图
这里写图片描述

2.进入mysql的bin目录执行如下命令

$ cd /usr/local/mysql/bin
$ sudo su  

之后输入管理员密码会看到

sh-3.2# 

之后我们输入下面命令以安全模式运行mysql

sh-3.2#./mysqld_safe --skip-grant-tables &

运行结束我们打开mac的系统偏好设置,选择msyql,我们会发现Mysql重新运行了如图

这里写图片描述

回到终端点击Command + N 重新打开一个终端
输入

mysql -u -root

这时候我们不需要密码就能进入mysql

Your MySQL connection id is 57
Server version: 5.7.10 MySQL Community Server (GPL)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

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>

注意:这里有的时候会进不来,这个时候可以尝试重启mac电脑,具体原因我也不清楚。

3.修改root密码
首先执行下面命令为了能够修改任意的密码

mysql> FLUSH PRIVILEGES;

之后执行修改密码的SQL语句,这里的qsd19001008可以替换你自己想要修改的密码

mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('qsd19001008');

如果你的子帐号可以登录msyql你也可以尝试下面的方法

mysql>UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';

mysql>USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';

又或者

mysql>USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = '%' AND User = 'root';

最后刷新

FLUSH PRIVILEGES;

Control+D推出mysql,然后关闭安全模式数据库,这里要输入你刚才设置数据密码就好啦

/usr/local/mysql/bin/mysqladmin -u root -p shutdown

到目前为止你就找回了你mysql的密码啦

正常启动mysql数据库,输入刚才设置的密码qsd19001008

/usr/local/mysql/share/mysql.server start

如果上面的命令不执行,同理到系统偏好里开启mysql服务器。

最后执行下面的终端命令,然后输入刚才设置的密码qsd19001008我们就可以正常进入mysql啦

$mysql -u root -p
<think>好的,我现在需要帮助用户重置MySQL数据库root密码。根据用户提供的引用内容,我需要综合不同的方法,确保步骤正确且适用于不同情况。首先,用户可能使用的是不同的操作系统,比如WindowsLinux,所以得分别考虑。 首先,我应该回忆一下常见的重置密码步骤。引用中提到的停止MySQL服务,然后以跳过权限检查的方式启动,这样可以在不验证密码的情况下登录。比如引用4提到在Windows下使用mysqld --skip-grant-tables,而引用1和2也提到了类似的方法。用户可能没有权限者服务没关闭,需要注意步骤的正确顺序。 接下来,用户登录MySQL后需要执行密码更新。引用中有不同的SQL语句,比如UPDATE user SET password=...,者使用SET PASSWORD命令,还有引用3中的set password for root@localhost。这里需要注意MySQL版本,因为不同版本可能密码字段不同,比如5.7及以上可能使用authentication_string而不是password字段。比如引用2使用了authentication_string,这可能适用于较新版本,而引用4用的是password字段,适用于旧版本。 另外,修改密码后必须执行FLUSH PRIVILEGES;来刷新权限,所有引用都提到了这一点,这点很重要。之后需要重启MySQL服务,确保更改生效。用户可能在操作过程中遇到问题,比如无法停止服务,权限不足,需要以管理员身份运行命令行,如引用4中提到的以管理员身份运行cmd。 还要考虑用户是否忘记root密码,是否需要安全模式启动。在Linux下可能需要使用sudo,者在Windows下使用服务管理器停止服务。步骤中的细节需要准确,比如在Linux下使用systemctl命令,而Windows用net stop mysql者服务管理器。 另外,用户可能对命令行操作不熟悉,需要给出具体的命令示例,比如如何切换到MySQL的bin目录,如何启动mysqld_safe等。同时,要注意不同安装方式可能路径不同,可能需要用户根据实际情况调整路径。 最后,需要提示用户修改密码后的测试步骤,比如用新密码登录,以及可能遇到的错误和解决方法,比如密码策略问题,者插件导致的问题。还要提醒用户确保安全性,修改后更新权限。 总结步骤应该是:停止服务→跳过权限启动→登录→更新密码→刷新权限→重启服务→测试登录。需要分Windows和Linux两种情况,分别写出步骤,并注明版本差异。确保用户能一步步跟随操作,避免遗漏关键步骤。</think>### 重置MySQL root密码的分步指南 #### 方法一:通用步骤(适用于Windows/Linux/Mac) 1. **停止MySQL服务** - **Windows**: ```bash net stop mysql ``` 通过服务管理器停止"MySQL"服务 - **Linux/Ubuntu**: ```bash sudo systemctl stop mysql ``` 2. **以跳过权限表方式启动MySQL** 打开命令行并执行(注意保留此窗口不关闭): ```bash mysqld_safe --skip-grant-tables & ``` 3. **无密码登录MySQL** 新开命令行窗口执行: ```bash mysql -u root ``` 4. **更新root密码** ```sql -- MySQL 5.7以下版本 UPDATE mysql.user SET password=PASSWORD('new_password') WHERE User='root'; -- MySQL 5.7+版本 UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root'; -- 通用方法(推荐) ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; ``` 5. **刷新权限并退出** ```sql FLUSH PRIVILEGES; exit; ``` 6. **重启MySQL服务** - **Windows**: ```bash net start mysql ``` - **Linux**: ```bash sudo systemctl restart mysql ``` #### 方法二:Linux专用(systemd系统) ```bash # 1. 停止服务 sudo systemctl stop mysql # 2. 创建临时启动配置 sudo mysqld --skip-grant-tables --skip-networking & # 3. 登录并修改密码 mysql -u root ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; exit; # 4. 强制终止进程并重启 sudo killall mysqld sudo systemctl start mysql ``` #### 验证密码修改 ```bash mysql -u root -p # 输入新密码测试登录 ``` #### 常见问题解决方案 1. **权限拒绝错误** - Windows需以管理员身份运行CMD - Linux命令前加`sudo` 2. **修改密码后无法登录** 检查密码字段名: ```sql SELECT plugin, authentication_string FROM mysql.user WHERE User='root'; ``` 若使用`auth_socket`插件,需执行: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password'; ``` 3. **找不到mysqld_safe** 直接使用完整路径: ```bash /usr/sbin/mysqld --skip-grant-tables & ``` > 提示:将`new_password`替换为实际密码密码需满足复杂度要求(至少8位含大小写字母+数字)[^2][^4]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值