如何找出MySQL root密码
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何找出MySQL root密码相关的知识,希望对你有一定的参考价值。
感谢@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
有一件事让我在新安装的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';
然后注销,现在血腥的东西最终会接受你的密码
该过程根据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)
在MySQL工作的数据文件夹中的“hostname”.err文件中,尝试查找以下列内容开头的字符串:
“为root @ localhost生成临时密码”
您可以使用
less /mysql/data/dir/hostname.err
然后是斜杠命令,后跟你想要查找的字符串
/"A temporary password"
然后按n,转到下一个结果。
这对我有用:
在终端上键入以下内容
$ sudo mysql -u root -p
输入密码://按Enter键
MySQL的>
这里提供的答案似乎对我不起作用,结果证明是: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/)
系统:
- S和Sぃx 7
- mysql参见14.14 Distrib 5.7.25
程序:
- 打开两个shell会话,以Linux root用户身份登录,另一个以非root用户身份登录
mysql
命令。 - 在根会话中,停止正常的mysqld侦听器并启动绕过密码身份验证的侦听器(注意:这是一个重大的安全风险,因为任何有权访问
mysql
命令的人都可以在没有密码的情况下访问您的数据库。您可能希望关闭活动shell在执行此操作之前会话和/或禁用shell访问):# systemctl stop mysqld
# /usr/sbin/mysqld --skip-grant-tables -u mysql &
- 在非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;
- 在根会话中,杀死mysqld的无密码实例并将正常的mysqld侦听器恢复为服务:
# kill %1
# systemctl start mysqld
- 在非根会话中,测试上面配置的新root密码:
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
...
mysql>
转到phpMyAdmin> config.inc.php> $ cfg ['Servers'] [$ i] ['password'] ='';
您无法查看哈希密码;你唯一能做的就是重置它!
停止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
您的新密码是“密码”。
MySQL 5.7及更高版本将root保存在MySQL日志文件中。
请试试这个:
sudo grep 'temporary password' /var/log/mysqld.log
你找不到它。它存储在一个数据库中,您需要使用root密码才能访问,即使您以某种方式获得了访问权限,也会使用单向哈希进行哈希处理。你可以重置它:http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
请按照以下步骤在Windows系统中重置密码
- 从任务管理器停止Mysql服务
- 创建一个文本文件并粘贴以下语句
MySQL 5.7.5及更早版本:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');
MySQL 5.7.6及更高版本:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'yournewpassword';
- 保存为
mysql-init.txt
并将其放入'C' drive
。 - 打开命令提示符并粘贴以下内容
C:\> mysqld --init-file=C:\\mysql-init.txt
除非程序包管理器要求您在安装期间键入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)
莫里斯
作为其他答案的补充,在cpanel安装中,mysql root密码存储在名为/root/.my.cnf
的文件中。 (并且cpanel服务会在更改时将其重置,因此此处的其他答案将无济于事)
你可以查看mysql root密码,我已经在mysql 5.5上试过了,所以不知道其他新版本的工作与否
nano ~/.my.cnf
立即安装mysql服务器后,默认密码是:mysql
以上是关于如何找出MySQL root密码的主要内容,如果未能解决你的问题,请参考以下文章