如何找到 MySQL 的 root 用户密码

我不知道我的MySQL root 密码;我怎么才能知道呢?是否有存储此密码的文件?

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

686308 次浏览

你找不到它。它存储在一个数据库中,您需要根密码才能访问该数据库,即使您以某种方式获得了访问权限,它也会使用单向散列进行散列。你可以重置它:如何重置Root用户密码

根据MySql版本的不同,该过程有所不同。按照您的版本所描述的步骤进行操作:

  • 提示-阅读说明页之前的MySql版本*

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

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

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

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

< p > 5.0 http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html < / p > < p > 5.1 http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html < / p >

... 只需在链接中更改版本(5.5,5.6,5.7)

您无法查看散列后的密码;你唯一能做的就是重置!

停止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命令行:

mysql> exit

在正常模式下重启MySQL,首先停止安全模式实例:

$ mysqladmin -u root -p shutdown   # (when prompted, enter the new password just set)
$ sudo service mysql start

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

你的新密码是“password”。

mysql服务器安装后的默认密码是:mysql

多亏了@thusharaK,我可以在不知道旧密码的情况下重置根密码。

在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中的password字段。用户表字段被删除,现在字段名是'authentication_string'。

退出mysql安全模式,启动mysql服务:

mysqladmin shutdown
sudo service mysql start

除非包管理器要求您在安装期间输入根密码,否则默认的根密码是空字符串。要连接到新安装的服务器,输入:

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)

Maurycy

除了其他答案,在cpanel安装中,mysql根密码存储在一个名为/root/.my.cnf的文件中。(cpanel服务在更改时将其重置,所以这里的其他答案不会有帮助)

在你的“主机名”中。在MySQL工作的数据文件夹中的err文件中,尝试寻找以以下开头的字符串:

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

你可以使用

less /mysql/data/dir/hostname.err

然后使用斜杠命令,后面跟着要查找的字符串

/"A temporary password"

然后按n,进入下一个结果。

MySQL 5.7及以上版本在MySQL日志文件中保存root。

请试试这个:

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

在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

你可以查看mysql根密码,好吧,我已经在mysql 5.5上尝试过了,所以不知道其他新版本是否工作良好

nano ~/.my.cnf

这招对我很管用:

在终端类型上执行如下操作

$ sudo mysql -u root -p

输入密码:/ / 只要按回车键

mysql >

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

这里提供的答案似乎对我不起作用,事实证明,诀窍是: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test'; < / p >

(完整答案:在MySQL 5.7中使用" plugin: auth_socket "修改用户密码)

有一件事让我在新安装MySQL时绊倒了,我想知道为什么我不能让默认密码工作,为什么甚至重置方法也不起作用。 在Ubuntu 18上,MySQL服务器的最新版本在默认情况下根本不使用root用户的密码认证。这意味着不管你设置它为什么,它都不会让你使用它。它期望你从一个特权套接字登录
mysql -u root -p

即使您使用了正确的密码,这也不起作用。

相反,你需要使用:

sudo mysql

将与任何密码工作。 然后输入

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

然后登出,现在它将接受您的密码。

系统:

  • CentOS Linux 7
  • mysql版本14.14发行版5.7.25

过程:

  1. 打开两个shell会话,以Linux root用户登录其中一个会话 另一个是非根用户,可以访问mysql命令

  2. 在根会话中,停止正常的mysqld侦听器并启动一个 绕过密码验证的监听器(注意:这是一个 显著的安全风险,因为任何人都可以访问mysql 命令可以在没有密码的情况下访问您的数据库。你可能想 之前关闭活动shell会话和/或禁用shell访问 这样做):< / p > < p > # systemctl stop mysqld < br > 李# /usr/sbin/mysqld --skip-grant-tables -u mysql & < / p > < / >

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

    < p > $ mysql < br > mysql> flush privileges; < br > Query OK, 0 rows affected (0.00 sec) < / p > < p > mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass'); < br > Query OK, 0 rows affected, 1 warning (0.01 sec) < / p >

    mysql> quit; < / p >

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

    < p > # kill %1 < br > 李# systemctl start mysqld < / p > < / >
  5. 在你的非root会话中,测试你上面配置的新root密码:

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

我用另一种方法解决了这个问题,这对一些人来说可能更简单。

我这样做是因为我尝试在安全模式下启动,但无法连接到错误: ERROR 2002 (HY000):无法通过socket '/var/run/mysqld/mysqld连接到本地MySQL服务器。袜子”(2)< / p >

我所做的就是以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

尝试更改密码没有给我任何错误,但对我没有任何帮助,所以我放弃并重新创建根用户

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

根用户现在正在使用新密码

我被这个问题困扰了几分钟,下面是唯一有效的解决方案:
https://phoenixnap.com/kb/access-denied-for-user-root-localhost < / p >
  1. sudo mysql
  2. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'insert_password';
  3. mysql -u root -p

如果你已经在mysql -uroot -p解决方案不会起作用之前设置了密码,

在我的例子中,我使用了上面的一些答案来解决这个问题(Ubuntu 16)。结果是:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables &

如果你在屏幕上看到这个文本: mysqld_safe UNIX套接字文件目录“/var/run/mysqld”不存在。 然后:< / p >

sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld


sudo mysqld_safe --skip-grant-tables & # Look at the & at the end!

进入其他终端来设置你的密码:

sudo mysql -u root


mysql> use mysql;
mysql> SET PASSWORD FOR 'root'@'localhost'=PASSWORD('__NEW__PASSWORD__');
mysql> flush privileges;
mysql> quit;

然后重新启动服务并登录

# end mysqld_safe in the other terminal
sudo service mysql start
sudo mysql -h 127.0.0.1 -uroot -p


使用Debian / Ubuntu mysql包,您可以使用用户debian-sys-maint登录,该用户拥有所有预期的权限,密码存储在文件/etc/mysql/debian.cnf

适用于Windows 10下的MySQL 5.5

您无法找到密码,因为它在表中是散列的,所以重置它是唯一的选择。

Lokesh kumar Chippada提供的通过.txt文件导入新密码脚本的解决方案对我不起作用。我发现命令提示符在启动导入后冻结了。

我在my.ini文件中添加了skip-grant-tables,根据tonycoupland在这篇SO文章上的答案的顶部。

然后我就可以从命令行登录到mysql了

$> mysql

然后在mysql中

mysql> FLUSH PRIVILEGES;

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

参见Mysql开发页面中的“B.3.3.2.3重置根密码:通用说明”。我现在已经从my.ini文件中删除了skip-grant-tables,并且我可以使用我创建的新密码作为根用户登录。