如何找出MySQL的root密码


167

我无法弄清楚MySQL的root密码。我怎么能找到这个?该密码是否存储在任何文件中?

我正在跟踪此链接,但是我在本地没有directadmin目录。


通过简单的Google搜索找到:dev.mysql.com/doc/refman/5.0/en/reset-permissions.html
Arran

11
默认的root密码是-等待它-“ root”(不带引号),或者根本没有密码(并且mysql服务器确实是您的密码)
NikolaBogdanović12年

是的,这是我笔记本电脑上的本地mysql服务器
Om3ga 2012年

那么有人只是通过了这个问题并在每个正确且相关的答案上投下了反对票吗?
lanzz 2012年

Answers:


142

感谢@thusharaK,我可以在不知道旧密码的情况下重置root密码。

在ubuntu上,我执行了以下操作:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

然后在新的终端上运行mysql:

mysql -u root

并运行以下查询来更改密码:

UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';
FLUSH PRIVILEGES;

在MySQL 5.7中,删除了mysql.user表字段中的password字段,现在该字段名称为'authentication_string'。

退出mysql安全模式并通过以下方式启动mysql服务:

mysqladmin shutdown
sudo service mysql start

24
我必须使用mysqladmin -u root -p shutdown和新密码一起使用。
SL Barth-恢复莫妮卡2014年

2
特别好的指令流:然后在新终端中运行mysql
Mohammed Subhi Sheikh Quroush

8
我做不到mysql -u root。它显示了错误Access denied
Avinash Raj

4
@AvinashRaj:尝试一下:sudo mysql -u root
Allen Gingrich

太棒了 我正在理解在RHEL 7中有效的方法:终端1:sudo服务mysql stop sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking终端2:mysql -u root更新mysql.user SET密码= PASSWORD (“新密码”)WHERE User ='root'; 冲洗特权; mysqladmin -u root -p shutdown注意:关闭mysqladmin后,您将看到在终端1中退出安全模式。sudo service mysql start就是这样,它像带有新密码的超级按钮一样起作用!
StackOverFlow用户

65

您无法查看哈希密码;您唯一可以做的就是重设它!

停止MySQL:

sudo service mysql stop

要么

$ sudo /usr/local/mysql/support-files/mysql.server stop

以安全模式启动它:

$ sudo mysqld_safe --skip-grant-tables

(以上是整个命令)

这将是一个持续执行的命令,直到该过程完成为止,因此打开另一个Shell /终端窗口,无需密码即可登录:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

MySQL 5.7及更高版本:

mysql> use mysql; 
mysql> update user set authentication_string=password('password') where user='root'; 

启动MySQL:

sudo mysql start

要么

sudo /usr/local/mysql/support-files/mysql.server start

您的新密码是“密码”。


sudo /usr/local/mysql/support-files/mysql.server停止sudo:/usr/local/mysql/support-files/mysql.server:找不到命令
Isuru 2015年

在这种情况下该怎么办?
Isuru 2015年

看起来mysql安装不正确。正确卸载并重新安装。
tk_

非常感谢。我有些奇怪, mysql_secure_installation根本不再合作。该authentication_string设置有什么作用?
将于

3
要重新启动,请尝试mysqladmin -u root -p shutdown使用新密码,然后sudo service mysql start
forumulator

37

MySQL 5.7及更高版本将root保存在MySQL日志文件中。

请尝试以下方法:

sudo grep 'temporary password' /var/log/mysqld.log

就我而言,密码不在这里。但是,相反,它/var/log/mysql/error.log包含有关root密码为空的警告-因此,这种方式挽救了我的一天:)
Janaka Bandara

19

一件事使我不禁尝试了新安装的mySQL,想知道为什么我无法使用默认密码,以及为什么连复位方法都不起作用。事实证明,在Ubuntu 18上,默认情况下,最新版本的mysql服务器对根用户完全不使用密码身份验证。因此,这意味着无论您将其设置为什么,都不会让您使用它。期望您从特权套接字登录。所以

mysql -u root -p

即使您使用正确的密码,也将根本无法使用!!!无论您输入什么内容,它都会拒绝访问。

相反,您需要使用

sudo mysql

无需输入任何密码即可使用。然后,一旦您需要输入

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';

然后注销,现在这血腥的事情最终将接受您的密码



14

请按照以下步骤在Windows系统中重置密码

  1. 从任务管理器停止Mysql服务

  2. 创建一个文本文件并粘贴以下语句

MySQL 5.7.5及更早版本:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');


MySQL 5.7.6及更高版本:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'yournewpassword';

  1. 另存为mysql-init.txt并将其放入'C' drive

  2. 打开命令提示符并粘贴以下内容

C:\> mysqld --init-file=C:\\mysql-init.txt


2
这是一个救命的人,很棒的提示!
Nicholas Kreidberg '16

在Centos7工作mysqld --init-file=/root/m.txt。我SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');/root/m.txt中
Bashyal

8

除非程序包管理器要求您在安装过程中键入root密码,否则默认的root密码为空字符串。要连接到新安装的服务器,请键入:

shell> mysql -u root --password=
mysql>

要更改密码,请返回unix shell并键入:

shell> mysqladmin -u root --password= password root

新密码是“ root”。现在连接到服务器:

shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

糟糕,密码已更改。使用新的root

shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql> 

答对了!新做一些有趣的事情

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

莫里西


1
现在默认情况下,它不使用密码,而是使用经过身份验证的套接字。因此仅更改密码已经不够用了。
Kit Ramos

7

除其他答案外,在cpanel安装中,mysql的root密码存储在名为的文件中/root/.my.cnf。(并且cpanel服务将其重置为更改,因此此处的其他答案无济于事)


6

您可以查看mysql的root密码,我已经在mysql 5.5上尝试过了,所以不知道其他新版本是否正常

nano ~/.my.cnf

4

这对我有用:

在终端上输入以下内容

$ sudo mysql -u root -p

输入密码:// 只需按Enter

mysql>


似乎默认情况下,mysql服务器不再使用密码身份验证。您必须以超级用户(sudo)身份启动mysql客户端以获取访问权限,直到您更改登录方法。
Kit Ramos

4

立即安装mysql服务器后对我有用的默认密码是: mysql


2
也许他没有回答这个问题,但是许多来这里的人可能会发现它可以解决您的问题。
Ohad Cohen

3

该过程根据MySql的版本而改变。完全按照您的版本描述的步骤进行操作:

  • 提示-请先阅读您的MySql *版本的说明页面

  • 在步骤5:中,而不是运行CMD,而是在桌面上创建一个调用CDM.exe的快捷方式。然后右键单击快捷方式,然后选择“以管理员身份执行”。

  • 在第6步:跳过命令的第一个建议版本,并执行第二个命令,该命令带有--defaults-file参数

  • 一旦执行了命令,如果一切正常,则CMD窗口将保持打开状态,并继续执行步骤6的命令。只需关闭窗口(单击“ x”),然后从任务管理器中强制关闭MySQl。

  • 使用SQL命令删除文件,然后重新启动MySQL。现在必须更改密码。

5.0 http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

5.1 http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html

...只需更改链接中的版本(5.5、5.6、5.7)


3

在您使用MySQL的数据文件夹中的“ hostname” .err文件中,尝试查找以以下开头的字符串:

“为roor @ localhost生成了一个临时密码”

您可以使用

less /mysql/data/dir/hostname.err 

然后斜杠命令后跟您要查找的字符串

/"A temporary password"

然后按n,转到下一个结果。



0

系统:

  • CentOS Linux 7
  • mysql版本14.14 Distrib 5.7.25

程序:

  1. 打开两个Shell会话,以Linux超级用户身份登录到一个,并以非root用户身份登录另一个,并可以访问该mysql命令。

  2. 在您的根会话中,停止普通的mysqld侦听器并启动一个绕过密码身份验证的侦听器(注意:这是一个重大的安全隐患,因为任何有权访问该mysql 命令的人都可以不使用密码来访问数据库。您可能要关闭活动的Shell会话和/或在执行此操作之前禁用外壳程序访问):

    # systemctl stop mysqld
    # /usr/sbin/mysqld --skip-grant-tables -u mysql &

  3. 在您的非root会话中,登录mysql并设置mysql root密码:

    $ mysql
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    mysql> quit;

  4. 在您的根会话中,杀死无密码的mysqld实例并将正常的mysqld侦听器恢复为服务:

    # kill %1
    # systemctl start mysqld

  5. 在您的非root用户会话中,测试您在上面配置的新root用户密码:

    $ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    ...
    mysql>


-2

我以另一种方式解决了这个问题,这对某些人来说可能更容易。

我这样做是因为我尝试以安全模式启动,但无法连接错误:ERROR 2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'(2)连接到本地MySQL服务器

我所做的是以root身份正常连接:

$ sudo mysql -u root

然后,我创建了一个新的超级用户:

mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit

然后以myuser身份登录

$ mysql -u myuser -p -h localhost

尝试更改密码没有给我任何错误,但对我却没有做任何事情,因此我删除并重新创建了root用户

mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;

现在,root用户正在使用新密码


-5

转到phpMyAdmin> config.inc.php> $ cfg ['Servers'] [$ i] ['password'] ='';


1
关于的问题没有任何问题phpmyadmin
罗恩侯爵
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.