如何找出 MySQL 的 root 密码
Posted
技术标签:
【中文标题】如何找出 MySQL 的 root 密码【英文标题】:How to find out the MySQL root password 【发布时间】:2012-06-09 08:15:39 【问题描述】:我不知道我的 mysql 根密码;我怎样才能找到这个?是否有任何文件存储此密码?
我正在关注这个link,但我在本地没有directadmin 目录。
【问题讨论】:
通过简单的 Google 搜索找到:dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html 默认 root 密码是 - 等待它 - “root”(不带引号),或者根本没有密码(并且是 mysql 服务器真的你的) 是的,这是我笔记本电脑上的本地 mysql 服务器 那么有人刚刚通过了这个问题并对每个正确且相关的答案投了反对票吗? 这里:***.com/questions/21651898/… 【参考方案1】:感谢@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
【讨论】:
我必须使用mysqladmin -u root -p shutdown
和新密码。
特别好的指令流程:然后在新终端中运行 mysql
我不能这样做mysql -u root
。它显示错误Access denied
@AvinashRaj:试试这个:sudo mysql -u root
太棒了。我正在理解 RHEL 7 中的工作原理:终端 1:sudo service mysql stop sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking 终端 2:mysql -u root UPDATE mysql.user SET Password=PASSWORD ('新密码') WHERE User='root';同花顺特权; mysqladmin -u root -p shutdown 注意:关闭 mysqladmin 后,您将看到终端 1 中的安全模式退出。 sudo service mysql start 就是这样,它就像使用新密码的魅力一样!【参考方案2】:
您无法查看散列密码;你唯一能做的就是重置它!
停止 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 stop sudo: /usr/local/mysql/support-files/mysql.server: 找不到命令 这种情况怎么办? 好像mysql没有正确安装。正确卸载并重新安装。 非常感谢。我的mysql_secure_installation
出了点问题,root 不再合作。 authentication_string
设置有什么作用?
要重新启动,尝试mysqladmin -u root -p shutdown
使用新密码,然后sudo service mysql start
【参考方案3】:
MySQL 5.7 及以上版本将 root 保存在 MySQL 日志文件中。
请试试这个:
sudo grep 'temporary password' /var/log/mysqld.log
【讨论】:
在我的情况下,密码不在这里;然而,相反,/var/log/mysql/error.log
包含一个关于 root 密码为空的警告 - 所以这种方式拯救了我的一天 :)【参考方案4】:
一件事让我在新安装的 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';
然后退出,现在该死的东西终于会接受你的密码了
【讨论】:
那是唯一一个和我一起工作的!谢谢【参考方案5】:你找不到它。它存储在数据库中,您需要 root 密码才能访问,即使您确实以某种方式获得了访问权限,它也会使用单向哈希进行哈希处理。你可以重置它:How to Reset the Root Password
【讨论】:
【参考方案6】:按照以下步骤在 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
【讨论】:
这是一个救生员,很棒的提示! 曾在 Centos7mysqld --init-file=/root/m.txt
工作。我将上面的命令SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');
添加到 /root/m.txt【参考方案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)
莫里西
【讨论】:
现在默认不使用密码,而是使用经过身份验证的套接字。所以仅仅更改密码是不够的。【参考方案8】:除了其他答案之外,在 cpanel 安装中,mysql root 密码存储在名为/root/.my.cnf
的文件中。 (并且 cpanel 服务会在更改时将其重置,因此此处的其他答案无济于事)
【讨论】:
【参考方案9】:你可以查看mysql root密码,我在mysql 5.5上试过了,不知道其他新版本好不好用
nano ~/.my.cnf
【讨论】:
【参考方案10】:这对我有用:
在终端输入以下内容
$ sudo mysql -u root -p
输入密码://直接回车
mysql>
【讨论】:
看来mysql服务器默认不再使用密码验证了。您必须以超级用户 (sudo) 身份启动 mysql 客户端才能获得访问权限,直到您更改登录方法。【参考方案11】:立即安装mysql服务器后对我有用的默认密码是:mysql
【讨论】:
也许他没有回答这个问题,但是很多人来这里可能会发现它解决了他们的问题。【参考方案12】:过程会根据 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)
【讨论】:
【参考方案13】:在 MySQL 工作的数据文件夹内的“主机名”.err 文件中,尝试查找以以下开头的字符串:
"为roor@localhost生成一个临时密码"
你可以使用
less /mysql/data/dir/hostname.err
然后是斜线命令,后跟要查找的字符串
/"A temporary password"
然后按 n,转到下一个结果。
【讨论】:
【参考方案14】:我用不同的方式解决了这个问题,这对某些人来说可能更容易。
我这样做是因为我尝试以安全模式启动但无法连接错误: 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
然后以我的用户身份登录
$ 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 用户现在正在使用新密码
【讨论】:
【参考方案15】:这里提供的答案似乎对我不起作用,诀窍原来是:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
(完整答案:Change user password in MySQL 5.7 with “plugin: auth_socket”)
【讨论】:
【参考方案16】:系统:
CentOS Linux 7 mysql Ver 14.14 Distrib 5.7.25程序:
打开两个 shell 会话,以 Linux root 用户身份登录其中一个
另一个是可以访问mysql
命令的非root 用户。
在你的 root 会话中,停止正常的 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;
在你的 root 会话中,杀死 mysqld 的无密码实例并将正常的 mysqld 侦听器恢复到服务:
# kill %1
# systemctl start mysqld
在您的非 root 会话中,测试您在上面配置的新 root 密码:
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
...
mysql>
【讨论】:
【参考方案17】:我被这个问题困扰了几分钟,以下是唯一有效的解决方案:https://phoenixnap.com/kb/access-denied-for-user-root-localhost
sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'insert_password';
mysql -u root -p
【讨论】:
【参考方案18】:如果您过去已经设置了密码,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
【讨论】:
【参考方案19】:使用 Debian / Ubuntu mysql 软件包,您可以使用用户 debian-sys-maint
登录,该用户具有所有预期的权限,密码存储在文件 /etc/mysql/debian.cnf
中
【讨论】:
【参考方案20】:转到 phpMyAdmin > config.inc.php > $cfg['Servers'][$i]['password'] = '';
【讨论】:
phpmyadmin
的问题中没有任何内容。以上是关于如何找出 MySQL 的 root 密码的主要内容,如果未能解决你的问题,请参考以下文章