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

问题描述 投票:0回答:5

首先,我知道有几个线程,但我尝试了很多解决方案,但我无法让任何东西起作用。

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

我下载了mysql服务器5.7.19

按照 redtek 的回答,这里:在 OS X 上设置 MySQL root 用户密码

我从系统设置中打开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
mysql macos
5个回答
14
投票

停止 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

2
投票

第一步是停止 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表中的password字段被删除,现在字段名称为'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

0
投票

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

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

0
投票

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

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

为了确保过程安全: - 关闭MySQL系统偏好设置中“启动时自动启动MySQL服务器”的勾选(spotlight - 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 并返回时它在设置时仍可访问。 -
\q
quit

关闭所有终端 - 所有终端,重新启动计算机,并确保一切正常(当然这需要 - 重新启动 - 打开终端 -

mysql -u root -p
(输入) - 使用您在上述步骤中提供的密码进行响应)。 在我的回答中:
jj
是设置的密码

关于相当新的一般知识的酷东西(在说密码不是一个字段或类似的东西之后,这在某种程度上立即对我有用,在

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'

点继续执行上述步骤

0
投票

适用于 MacOS 中的 MySQL 8.x 停止所有MySQL服务器服务

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

这将在此终端启动 mysql 服务器 启动新终端

cd /usr/local/mysql/bin
sudo ./mysql -u root
FLUSH PRIVILEGES;
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;
sudo ./mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';
FLUSH PRIVILEGES;
exit;
sudo ./mysqladmin -u root shutdown -p (this will shutdown mysql server that started at the other terminal)
start mysql with the normal way
© www.soinside.com 2019 - 2024. All rights reserved.