首先,我知道有几个线程,但我尝试了很多解决方案,但我无法让任何东西起作用。
我没有任何 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 服务器。
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
第一步是停止 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
找不到命令,因为系统变量 PATH 中没有包含 MySQL 安装文件夹( /usr/local/mysql/ )。
我花了一段时间才解决这个问题,考虑到大多数解决方案都适用于低于 MySQL 5.7 版本的版本
按照下面的操作,它也可以帮助您进行排序。
为了确保过程安全: - 关闭MySQL系统偏好设置中“启动时自动启动MySQL服务器”的勾选(spotlight - mysql)
sudo /usr/local/mysql/support-files/mysql.server start
-PS:这是为了确保其在线,有时下一个进程会中断。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'
点继续执行上述步骤
适用于 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