在 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 并取回它在您设置时保持可访问性。
- \q
或 quit
全部关闭 - 所有终端,重新启动您的计算机,并确保一切正常(当然这需要 - 重新启动 - 打开终端 - 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 密码的主要内容,如果未能解决你的问题,请参考以下文章