在 OS X 上重置 mysql 服务器 root 密码

Posted

技术标签:

【中文标题】在 OS X 上重置 mysql 服务器 root 密码【英文标题】:Resetting mysql server root password on OS X 【发布时间】:2018-01-21 11:06:50 【问题描述】:

首先,我知道有几个线程,但是我尝试了这么多解决方案,但我什么都做不了。

我对 mysql 服务器和终端没有任何经验。

我下载了mysql服务器5.7.19

根据 redtek 的回答,这里:Setting the MySQL root user password on OS X

我从系统设置打开mysql,点击停止服务器。然后我打开终端写

sudo mysqld_safe --skip-grant-tables

我询问我的密码(我假设我启动计算机时密码相同)。我收到一条消息,提示找不到命令。

MacBook-Pro:~ XXXXXX$ sudo mysqld_safe --skip-grant-tables
Password:
sudo: mysqld_safe: command not found
MacBook-Pro:~ XXXXXX$ 

更新:当我运行以下解决方案时,打开新窗口后出现以下错误:

Last login: Sun Aug 13 16:51:49 on ttys002


MacBook-Pro:~ XXXXX$   mysql -u root  


-bash: mysql: command not found


MacBook-Pro:~ XXXXX$ UPDATE mysql.user SET Password=PASSWORD('my-new-password') WHERE User='root';  


-bash: syntax error near unexpected token `('


MacBook-Pro:~ XXXXX$ FLUSH PRIVILEGES;  


-bash: FLUSH: command not found


MacBook-Pro:~ XXXXX$ \q

【问题讨论】:

【参考方案1】:

第一步是停止 MySQL 服务。

sudo /usr/local/mysql/support-files/mysql.server stop

那你需要在安全模式下启动它

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables

其次:让我们打开另一个shell/终端窗口,无需密码登录

  mysql -u root  
UPDATE mysql.user SET Password=PASSWORD('my-new-password') WHERE User='root';  
FLUSH PRIVILEGES;  
\q

因为在 MySQL 5.7 中,mysql.user 表中的密码字段被删除,现在字段名称为 'authentication_string'。

 mysql -u root  
UPDATE mysql.user SET authentication_string=PASSWORD('my-new-password') WHERE User='root';  
FLUSH PRIVILEGES;  
\q

现在又需要启动 MySQL 服务器了

sudo /usr/local/mysql/support-files/mysql.server start

【讨论】:

知道为什么它对我不起作用吗?这是在我打开一个新的终端窗口之后: 最后登录:Sun Aug 13 16:51:49 on ttys002 MacBook-Pro:~ XXXXX$ mysql -u root -bash: mysql: command not found MacBook-Pro:~ XXXXX$ UPDATE mysql.user SET Password=PASSWORD('my-new-password') WHERE User='root'; -bash: 意外标记 `(' 附近的语法错误 MacBook-Pro:~ XXXXX$ FLUSH PRIVILEGES; -bash: FLUSH: command not found MacBook-Pro:~ XXXXX$ \q hmmm..我想你尝试在这个页面中使用这个命令dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html我搜索了你..尝试更新你的 mysql 服务器。我希望你赢 @Üneys mysql -u root 命令给了我错误用户'root'@'localhost'的访问被拒绝(使用密码:否)【参考方案2】:

找不到该命令,因为 MySQL 安装文件夹 ( /usr/local/mysql/ ) 未包含在系统变量 PATH 中。

    您可以添加到 PATH 或者您可以使用完整路径 /usr/local/mysql/bin/mysqld_safe

【讨论】:

你能帮我澄清一下吗?因为我真的不懂【参考方案3】:

我花了一段时间才解决这个问题,考虑到大多数解决方案都是针对低于 MySQL 5.7 的版本

按照下面的操作,它也可以帮助您进行排序。

为了安全地确保过程: - 在 MySQL 的系统偏好设置中关闭“启动时自动启动 MySQL 服务器”的勾选(聚焦 - mysql)

打开终端并输入sudo /usr/local/mysql/support-files/mysql.server start -PS:这是为了确保它的内联,有时是下一个进程在我身上中断。 现在关闭 MySQL 服务:sudo /usr/local/mysql/support-files/mysql.server stop 输入sudo mysqld_safe --skip-grant-tables 现在这将绕过 MySQL 的安全性 - 对操作不安全,也不是始终允许您使用 MySQL 的永久解决方案。 目前,如您所见,它正在处理中……这将使我们能够执行以下步骤。在剩下的过程中,让终端的这个标签保持打开状态!!

现在 Cmd+N(新终端窗口),在新终端中: - sudo /usr/local/mysql/support-files/mysql.server start - update user set authentication_string=password(‘jj’) where user='root' 这在旧版本上将是update user set password=PASSWORD(“jj”) where user='root’; - FLUSH PRIVILEGES; //这是必不可少的(更新磁盘而不是缓存),以确保下次关闭 mysql 并取回它在您设置时保持可访问性。 - \qquit

全部关闭 - 所有终端,重新启动您的计算机,并确保一切正常(当然这需要 - 重新启动 - 打开终端 - mysql -u root -p(输入) - 使用您在上述步骤中提供的密码进行响应)。 在我的回答中:jj 是密码设置

Cool-Stuff 用于相当新的一般知识(在说密码不是字段或类似的东西后,这不知何故立即对我有用,在 update user set authentication_string=password(‘jj’) where user='root' 的这个新终端中进行,所以如果你有相同的,去在下面的步骤中 - 在 >mysql 本身你所在的位置..): - use mysql; - show tables; - describe user; 然后从update user set authentication_string=password(‘jj’) where user='root'点继续上述步骤

【讨论】:

【参考方案4】:

停止 MySQL 服务器。

sudo /usr/local/mysql/support-files/mysql.server stop

使用 --skip-grant-tables 选项重新启动它。

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables 

打开另一个终端以使用 mysql 客户端连接到 MySQL 服务器。

 cd /usr/local/mysql/bin  
 mysql

告诉服务器重新加载授权表,以便帐户管理语句起作用。

FLUSH PRIVILEGES;

现在重置root用户的密码

MySQL 5.7.6 及更高版本:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

MySQL 5.7.5 及更早版本:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

停止服务器并正常重启

sudo /usr/local/mysql/support-files/mysql.server stop
sudo /usr/local/mysql/support-files/mysql.server start

【讨论】:

以上是关于在 OS X 上重置 mysql 服务器 root 密码的主要内容,如果未能解决你的问题,请参考以下文章

Mac OS X 10.11.4 忘记root密码如何处理

windows 下重置 mysql 的 root 密码

MySQL重置密码

MySQL WINDOWS下重置root用户密码过程

重置MySQL 5.6中的ROOT密码

mysql 重置root密码