如何找出MySQL root密码

时间:2012-06-05 09:54:04

标签: mysql database

我无法弄清楚我的MySQL root密码;我怎么能找到这个?是否有存储此密码的文件?

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

19 个答案:

答案 0 :(得分:122)

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

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

mysqladmin shutdown
sudo service mysql start

答案 1 :(得分:63)

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

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

您的新密码是'密码'。

答案 2 :(得分:34)

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

请试试这个:

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

答案 3 :(得分:17)

你找不到它。它存储在一个数据库中,您需要使用root密码才能访问,即使您以某种方式获得了访问权限,也会使用单向哈希进行哈希处理。您可以重置它:http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

答案 4 :(得分:10)

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

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

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

  3.   

    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. 打开命令提示符并粘贴以下内容

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

答案 5 :(得分:7)

除非程序包管理器要求您在安装期间键入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)

Maurycy

答案 6 :(得分:6)

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

答案 7 :(得分:5)

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

nano ~/.my.cnf

答案 8 :(得分:4)

立即安装mysql服务器后,默认密码为:mysql

答案 9 :(得分:3)

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

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

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

  • 在步骤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)

答案 10 :(得分:3)

一件事使我陷入了新安装的mySQL的困扰,并且想知道为什么我无法获得默认密码才能工作,以及为什么连reset方法都无法正常工作。 事实证明,在Ubuntu 18上,默认情况下,最新版本的mysql服务器对根用户完全不使用密码身份验证。因此,这意味着无论您将其设置为什么,都不会让您使用它。期望您从特权套接字登录。

mysql -u root -p
即使您使用正确的密码,

也不起作用!!!无论您输入什么内容,它都会拒绝访问。

相反,您需要使用

sudo mysql

将不带任何密码。 然后,一旦您需要输入

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

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

答案 11 :(得分:3)

这对我有用:

在终端上输入以下内容

$ sudo mysql -u root -p

输入密码:// 只需按Enter

的MySQL>

答案 12 :(得分:3)

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

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

你可以使用

less /mysql/data/dir/hostname.err 

然后是斜杠命令,后跟你想要查找的字符串

/"A temporary password"

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

答案 13 :(得分:0)

这里提供的答案对我来说似乎不起作用,结果证明是:     ALTER USER'root'@'localhost'用mysql_native_password识别BY'test';

(完整答案:https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/

答案 14 :(得分:0)

系统:

  • CentOS Linux 7
  • mysql版本14.14 Distrib 5.7.25

过程:

  1. 打开两个shell会话,以Linux超级用户身份登录到一个 另一个则是具有mysql命令访问权限的非root用户。

  2. 在您的root会话中,停止普通的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>

答案 15 :(得分:0)

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

之所以这样做是因为我尝试以安全模式启动,但是无法连接错误: 错误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

然后以我的用户身份登录

$ 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;

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

答案 16 :(得分: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

答案 17 :(得分:0)

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

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

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

如果您在屏幕上看到此文本: UNIX 套接字文件的 mysqld_safe 目录“/var/run/mysqld”不存在。 然后做:

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

答案 18 :(得分:-4)

转到phpMyAdmin> config.inc.php> $ cfg ['服务器'] [$ i] ['密码'] ='';