mysql root密码忘记了
Posted
技术标签:
【中文标题】mysql root密码忘记了【英文标题】:mysql root password forgotten 【发布时间】:2012-04-21 15:50:53 【问题描述】:我有一段时间没有使用 php mysql,现在我需要再次使用它。但问题是我忘记了 MySQL 控制台的密码。尝试登录 PHPMyAdmin 时出现错误 #1045。
在MySQL站点看到一篇文章如何重置root密码(http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html#resetting-permissions-windows)
步骤是
create a mysql-init.txt file containing UPDATE mysql.user SET Password=PASSWORD('newpass') WHERE User='root';
FLUSH PRIVILEGES;
我保存为C:\me\mysql-init
我在命令提示符下写了--
C:\wamp\bin\mysql\mysql5.5.8\bin\mysqld --init-file=C:\me\mysql-init.txt
我也尝试使用双反斜杠..但它不起作用。 MySQL 控制台要求输入密码,但它没有使用新密码。我究竟做错了什么?我那里有几张桌子。怎么办?
提前致谢。
【问题讨论】:
youtu.be/gFo5DV_pSg8 - 这个视频帮助我更改了我的一个生产服务器的密码。 这能回答你的问题吗? How to reset or change the MySQL root password? 【参考方案1】:尝试使用 --skip-grant-tables 启动 mysql
mysqld --skip-grant-tables
然后在没有用户名/密码的情况下使用 mysql 命令行连接到您的 mysqld
shell> mysql
然后发出命令
> mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
> WHERE User='root'; mysql> FLUSH PRIVILEGES;
【讨论】:
非常感谢您的回复。它目前正在工作。现在我可以登录到 phpmyadmin 复制我要保存的所有表格。谢谢。但它没有占用稍后重新打开 wamp 服务器时的密码。我必须经历与 mysqld --skip-grant-tables 相同的过程。 我安装的 mysql 版本没有密码列,而是这样工作:更新 mysql.user set authentication_string=password('MyNewPass') where User = 'root'; 未能将datadir设置为/var/lib/mysql/ 如果您的 sql 版本告诉您它不是“在 ('MyNewPass') 附近使用的正确语法”:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPass';
"Thank you very much for reply.It is working for the time being.
" - 在这种情况下,请接受答案,这将对以后阅读此问题的其他人有所帮助【参考方案2】:
我无法在 Adelave 的工作回答中得到 mysqld
。但这对我有用
使用 --skip-grant-tables 停止和启动 mysql
service mysql.server stop
service mysql.server start --skip-grant-tables
然后在没有用户名/密码的情况下连接到您的 mysqld
mysql
然后在mysql命令行上更新密码
mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> \q
然后正常重启mysql
service mysql.server restart
【讨论】:
这适用于 Mac OSX 10.9.1 上的 MySQL 5.6.16,它适用于我 ;-)start -skip-grant-tables
命令抛出 错误!服务器退出而不更新PID文件错误..
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to
在 Mysql 8 上【参考方案3】:
如果其他答案没有帮助,您可以尝试卸载/重新安装 mysql。它适用于我的 ubuntu 服务器:
$sudo apt-get purge mysql*
$sudo apt-get autoremove
$sudo apt-get autoclean
更新分布
$sudo apt-get dist-upgrade
然后重新安装
$sudo apt-get install mysql-server
【讨论】:
【参考方案4】:使用 SQLYog 可以执行命令
用户创建CREATE USER 'tester'@'localhost' IDENTIFIED BY 'Pass123#d'
授权
GRANT ALL PRIVILEGES ON sakila.* TO 'tester'@'localhost'
在 MySQL 8.0 中更改密码
ALTER USER 'tester'@'localhost' IDENTIFIED BY 'Pass123#d'
(或者如果你知道 authentication_string 直接将其设置为更新)
UPDATE mysql.user
SET authentication_string='*F9B62579F38BE95639ACB009D79427F2D617158F'
WHERE USER='root'***
低版本mysql修改密码
GRANT USAGE ON *.\* TO 'tester'@'localhost' IDENTIFIED BY 'Pass123#d'
SET PASSWORD FOR 'tester'@'localhost' = PASSWORD('Pass123#d');**
【讨论】:
【参考方案5】:以下是要遵循的步骤:
-
使用以下命令找到 MySQL 配置文件:
$ mysql --help | grep -A 1 "Default options"
在 Ubuntu 16 上,文件位置通常为 /etc/mysql/mysql.conf.d/mysqld.cnf
编辑配置文件使用:$ sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
在[mysqld]
块下添加skip-grant-tables
并保存更改。
重启 MySQL 服务:sudo service mysql restart
查看 MySQL 服务状态:sudo service mysql status
使用以下命令登录 mysql:$ mysql -u root
并更改root
密码:
mysql> 刷新权限;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyNewPass';
通过删除 skip-grant-tables
行或使用 #
(哈希)对其进行注释来恢复 MySQL 配置文件更改。
最后重启 MySQL 服务,一切顺利。
【讨论】:
救生解决方案 :)【参考方案6】:Mac OS Mojave
$ brew services stop mysql
$ pkill mysqld
// warning: deletes all tables
$ rm -rf /usr/local/var/mysql/
$ brew postinstall mysql
$ brew services restart mysql
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'p4ssword';
Query OK, 0 rows affected (0.04 sec)
mysql> exit
Bye
然后你就恢复正常了。
$ sudo mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
我不喜欢在我的.env
文件中看到root
这个词,所以我通常会在创建一个诸如www.hockeysticks.net
之类的网站之后这样做:
#
CREATE DATABASE hockeysticks;
CREATE USER 'hockeysticks'@'localhost' IDENTIFIED BY 'hockeysticks';
GRANT ALL PRIVILEGES ON hockeysticks.* TO 'hockeysticks'@'localhost';
那么你的 localdev .env
文件就很简单了:
DB_DATABASE=hockeysticks
DB_USERNAME=hockeysticks
DB_PASSWORD=hockeysticks
注意:如果您需要保留数据库,请使用skip-grant-tables
方法。这有 3 个难点:
确保 MySQL 已停止,以便您可以使用 skip-grant-tables
重新启动它
确保您的密码更新 SQL 语法对于您的 MySQL 版本是正确的
确保在查询末尾附加FLUSH PRIVELEGES;
【讨论】:
【参考方案7】:使用 windows 命令提示符可以更改密码
-
转到
windows+R
并运行services.msc
然后停止MySQL服务并右键单击查看MySQL的属性并根据需要复制路径--defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini"
。
使用文本ALTER USER 'root'@'localhost' IDENTIFIED BY 'Your New Password';
创建文本文件reset.txt
并保存在C
驱动器中。
以管理员身份打开命令提示符,然后更改 MySQL 的安装目录"C:\Program Files\MySQL\MySQL Server 8.0\bin"
。
输入命令mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --init-file=C:\\reset.txt
【讨论】:
以上是关于mysql root密码忘记了的主要内容,如果未能解决你的问题,请参考以下文章