192

我无法弄清楚我的 MySQL 根密码;我怎样才能找到这个?是否有任何文件存储此密码?

我正在关注此链接,但我在本地没有 directadmin 目录。

4

20 回答 20

155

感谢@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.user 表字段中的密码字段被删除,现在字段名称为 'authentication_string'。

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

mysqladmin shutdown
sudo service mysql start
于 2014-10-07T10:28:47.763 回答
69

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

停止 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

您的新密码是“密码”。

于 2014-09-17T03:57:10.387 回答
42

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

请试试这个:

sudo grep 'temporary password' /var/log/mysqld.log
于 2016-03-13T14:59:15.337 回答
35

一件事让我在新安装的 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';

然后注销,现在该死的东西终于会接受你的密码了

于 2019-04-20T03:24:07.973 回答
17

你找不到它。它存储在数据库中,您需要 root 密码才能访问,即使您确实以某种方式获得了访问权限,它也会使用单向哈希进行哈希处理。您可以重置它:如何重置根密码

于 2012-06-05T09:55:40.527 回答
17

按照以下步骤在 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

于 2016-07-01T15:13:30.077 回答
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)

莫里西

于 2015-01-17T09:34:11.770 回答
8

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

于 2015-09-24T07:48:18.100 回答
7

你可以查看mysql root密码,我在mysql 5.5上试过了,所以不知道其他新版本好不好用

nano ~/.my.cnf
于 2016-10-28T17:26:09.763 回答
6

这对我有用:

在终端上输入以下内容

$ sudo mysql -u root -p

输入密码://只需按回车

mysql>

于 2017-02-19T15:35:45.980 回答
4

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

于 2014-09-29T08:43:48.740 回答
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)

于 2013-10-31T00:28:14.573 回答
3

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

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

您可以使用

less /mysql/data/dir/hostname.err 

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

/"A temporary password"

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

于 2016-01-11T05:06:02.033 回答
2

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

我这样做是因为我尝试以安全模式启动但无法连接错误:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

我所做的是以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 用户现在正在使用新密码

于 2019-09-06T18:04:13.533 回答
1

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

于 2022-01-21T09:51:32.937 回答
1
于 2018-05-24T07:19:33.067 回答
0

系统:

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

程序:

  1. 打开两个 shell 会话,以 Linux root 用户身份登录一个,另一个以有权访问该mysql命令的非 root 用户身份登录。

  2. 在您的根会话中,停止正常的 mysqld 侦听器并启动一个绕过密码身份验证的侦听器(注意:这是一个重大的安全风险,因为任何有权访问该mysql 命令的人都可以在没有密码的情况下访问您的数据库。您可能想要关闭活动的 shell 会话和/或在执行此操作之前禁用 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>

于 2019-06-24T17:57:17.273 回答
0

我被这个问题困扰了几分钟,以下是唯一有效的解决方案:
https ://phoenixnap.com/kb/access-denied-for-user-root-localhost

  1. sudo mysql
  2. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'insert_password';
  3. mysql -u root -p
于 2021-01-28T11:56:18.607 回答
0

如果您过去已经设置了密码,则该mysql -uroot -p解决方案将不起作用

就我而言,我使用上面的一些答案来解决这个问题(Ubuntu 16)。结果是:

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

如果您在屏幕上看到此文本: mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exist. 然后做:

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

于 2021-05-04T18:04:56.917 回答
-6

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

于 2017-10-19T04:39:42.623 回答