如何在MacOS中恢复mysql root密码

时间:2017-10-04 12:19:25

标签: mysql database macos mamp root

我启动我的MAMP并尝试通过localhost127.0.0.1连接到我的MySQL服务器,我尝试了所有可能的密码,我认为它是正确的,但由于某些原因它仍然没有&#39我喜欢它,所以我想我不知何故忘了它。我需要帮助。

尝试#1

输入所有可能的密码

MySQL -u root -h localhost -p

输入密码:< --- 我已经尝试了近10个可能的密码

我得到了

  

ERROR 1045(28000):拒绝访问用户&root;' @' localhost' (使用密码:否)

尝试#2

输入可能的密码

MySQL -u root -h localhost

我得到了

  

ERROR 1045(28000):拒绝访问用户&root;' @' localhost' (使用密码:否)

     

尝试#3

MySQL.server stop

我得到了

  

ERROR!无法找到MySQL服务器PID文件!

我试图运行此

mysqld_safe --skip-grant-tables &

我得到了

尝试#4

mysqld_safe --skip-grant-tables &

我得到了

[1] 72194
  ~  2017-10-04T12:13:42.6NZ mysqld_safe Logging to '/usr/local/var/mysql/BH-MacBook-Pro-15-512GB.local.err'.
2017-10-04T12:13:42.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql
2017-10-04T12:13:44.6NZ mysqld_safe mysqld from pid file /usr/local/var/mysql/BH-MacBook-Pro-15-512GB.local.pid ended

打开新标签页

MySQL -u root

我还是

  

ERROR 1045(28000):拒绝访问用户&root;' @' localhost' (使用密码:否)

尝试#5

关闭我的MAMP应用程序,然后运行

mysqld_safe --skip-grant-tables &

我得到了

[1] 72194
  ~  2017-10-04T12:13:42.6NZ mysqld_safe Logging to '/usr/local/var/mysql/BH-MacBook-Pro-15-512GB.local.err'.
2017-10-04T12:13:42.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql
2017-10-04T12:13:44.6NZ mysqld_safe mysqld from pid file /usr/local/var/mysql/BH-MacBook-Pro-15-512GB.local.pid ended

打开新标签页

MySQL -u root

我还是

  

ERROR 1045(28000):拒绝访问用户&root;' @' localhost' (使用密码:否)

我不再尝试什么了。

我无法设置root密码,因为我甚至无法进入。

这是我MySQL的过程

ps aux | grep MySQL

bheng            95850   0.2  1.0  2869440 175404   ??  S     8:48AM   0:00.28 /usr/local/opt/mysql/bin/mysqld --basedir=/usr/local/opt/mysql --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/opt/mysql/lib/plugin --bind-address=127.0.0.1 --log-error=/usr/local/var/mysql/bh-mbp-15-512gb.ad.benu.net.err --pid-file=/usr/local/var/mysql/bh-mbp-15-512gb.ad.benu.net.pid
_mysql             124   0.0  0.0  2864848   4040   ??  Ss   22Sep17   0:32.26 /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so
bheng            95863   0.0  0.0  2423384    396 s009  R+    8:48AM   0:00.00 grep mysql
bheng            95749   0.0  0.0  2448756   2496   ??  S     8:48AM   0:00.03 /bin/sh /usr/local/opt/mysql/bin/mysqld_safe --bind-address=127.0.0.1 --datadir=/usr/local/var/mysql
bheng            66379   0.0  0.1  2696936   9304   ??  S     8:06AM   0:00.51 /Applications/MAMP/Library/bin/mysqld --basedir=/Applications/MAMP/Library --datadir=/Applications/MAMP/db/mysql --plugin-dir=/Applications/MAMP/Library/lib/plugin --log-error=/Applications/MAMP/logs/mysql_error_log.err --pid-file=/Applications/MAMP/tmp/mysql/mysql.pid --socket=/Applications/MAMP/tmpmysql/mysql.sock --port=8889
bheng            66263   0.0  0.0  2446708   2100   ??  S     8:06AM   0:00.02 /bin/sh /Applications/MAMP/Library/bin/mysqld_safe --port=8889 --socket=/Applications/MAMP/tmp/mysql/mysql.sock --pid-file=/Applications/MAMP/tmp/mysql/mysql.pid --log-error=/Applications/MAMP/logs/mysql_error_log

4 个答案:

答案 0 :(得分:9)

这是你可以在macOS Sierra中完成它的方法,可能是你通过pkg安装它,并且系统首选项中有一个MySQL图标,如下所示:

enter image description here

如果已启动并正在运行,请打开终端并运行此命令:

pgrep -fl mysql

这将帮助您找到mysqld的路径以及用于启动服务器的当前命令,输出可能是这样的:

6283 /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid

下一步是停止MySQL,您可以通过单击“系统首选项”菜单并单击Stop MySQL Server按钮来执行此操作。一旦在终端中停止,您将需要再次启动服务器但需要一些额外的选项,像这样:

sudo /usr/local/mysql/bin/mysqld \
  --skip-grant-tables \
  --skip-networking \
  --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid

pgrep -fl mysql的输出确实是相同的命令,但在这种情况下,您只需要添加:

--skip-grant-tables --skip-networking

执行此操作后,您会注意到系统偏好设置中的菜单再次为绿色且MySQL应该已启动并运行,现在您可以尝试登录并更改密码:

mysql -uroot
mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('secret');
mysql> FLUSH PRIVILEGES;
mysql> exit

从“系统偏好设置”面板停止并重新启动MySQL,它现在应该使用新密码。

答案 1 :(得分:6)

请按照相同顺序执行步骤。

确保您的MySQL服务器已关闭。执行以下命令:

mysql.server stop

然后,以安全模式启动MySQL服务器

mysql.server start --skip-grant-tables --skip-networking

然后,使用root用户连接到MySQL。

mysql -u root

将数据库从none更改为mysql

MariaDB [(none)]> use mysql;
Database changed

使用相同的密码更新authentication_stringpassword列,如下所示(如果找不到列错误,请删除一个)

MariaDB [mysql]> update user set authentication_string=PASSWORD('password'), password=PASSWORD('password') where user='root';

MariaDB [mysql]> FLUSH PRIVILEGES;
MariaDB [mysql]> quit;

现在,停止包括MySQL服务器和MAMP应用程序在内的所有内容。

并在MAMP文件夹中搜索 config.inc.php 文件(您可以使用 command + space 并搜索此文件) 。

您可能没有权限更改此文件。更新文件权限后,您需要查找$cfg['Servers'][$i]['password']并更新密码值,如下所示。

$cfg['Servers'][$i]['password'] = 'password';

保存此文件并以正常模式重新启动所有内容。并尝试使用新密码连接root用户,如下所示:

mysql -uroot -ppassword

答案 2 :(得分:1)

您必须重置MySQL root密码,如下所示:

/etc/init.d/mysql stop
/usr/sbin/mysqld --skip-grant-tables --skip-networking &
mysql -u root

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('new_password');
mysql> FLUSH PRIVILEGES;
mysql> exit;

service mysql restart

然后,您将能够使用以下方式进行连接: mysql -u root -p 您的密码

答案 3 :(得分:1)