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

时间:2017-08-13 12:42:32

标签: mysql macos

首先,我知道有几个主题,但我尝试了很多解决方案,但我无法继续工作。

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

我下载了mysql server 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$ 

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分: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表中的密码字段被删除了,现在字段名称是' 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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

我花了一些时间来解决这个问题,考虑到大多数解决方案都适用于低于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的永久解决方案。 目前,如您所见,它在一个过程中...这将允许我们执行以下步骤。在剩余的过程中保留终端OPEN的这个标签!!

现在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'

开始继续执行上述步骤