我一直在尝试重置我的 MySQL 根密码。我已经运行mysqld_safe --skip-grant-tables
,更新了 root 密码,并检查了用户表以确保它在那里。
重新启动 MySQL 守护程序后,我尝试使用刚刚设置的新 root 密码登录,但仍然因用户“root”错误而拒绝访问。我也尝试过完全删除并重新安装 MySQL(包括删除my.cnf
文件),但仍然没有运气。接下来我能做什么?
我一直在尝试重置我的 MySQL 根密码。我已经运行mysqld_safe --skip-grant-tables
,更新了 root 密码,并检查了用户表以确保它在那里。
重新启动 MySQL 守护程序后,我尝试使用刚刚设置的新 root 密码登录,但仍然因用户“root”错误而拒绝访问。我也尝试过完全删除并重新安装 MySQL(包括删除my.cnf
文件),但仍然没有运气。接下来我能做什么?
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');
FLUSH PRIVILEGES;
从 MySQL 参考手册中查看:
首先登录MySQL:
mysql -u root -p
然后在mysql提示符下,运行:
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
然后
FLUSH PRIVILEGES;
查看此页面以获取更多信息:重置 Root 密码:Unix 系统
更新:
对于某些版本的 mysql,密码列不再可用,您将收到此错误:
ERROR 1054 (42S22): Unknown column 'Password' in 'field list'
在这种情况下,使用ALTER USER
如下答案所示。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
您可以在 MySQL 文档中找到重置 Root 密码。
请按照以下步骤操作。
sudo service mysql stop
sudo mysqld_safe --skip-grant-tables
sudo service mysql start
sudo mysql -u root
use mysql;
show tables;
describe user;
update user set authentication_string=password('1111') where user='root';
FLUSH PRIVILEGES;
使用密码“1111”登录。
这是 WAMP v3.0.6 及更高版本的更新答案。
在 MySQL 命令行客户端、phpMyAdmin或任何 MySQL GUI 中:
UPDATE mysql.user
SET authentication_string=PASSWORD('MyNewPass')
WHERE user='root';
FLUSH PRIVILEGES;
在 MySQL 5.7.x 版本中,MySQL 表中不再有密码字段。它被替换为authentication_string。(这适用于终端/CLI。)
在 MySQL 命令行客户端、phpMyAdmin或任何 MySQL GUI 中:
UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE user='root';
FLUSH PRIVILEGES;
我也四处搜索,可能有些答案适合某些情况,
我的情况是 Ubuntu 18.04.2 LTS 系统上的 Mysql 5.7:
(获取root权限)
$ sudo bash
(为root db用户设置密码+逐步实现安全性)
# mysql_secure_installation
(通过密码而不是套接字授予root用户访问权限)
(+编辑:显然你需要再次设置密码?)
(不要将其设置为“mySecretPassword”!!!)
# mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword');
mysql> FLUSH PRIVILEGES;
mysql> exit;
# service mysql restart
非常感谢zetacu(和erich)提供了这个出色的答案(搜索了几个小时后......)
享受:-D
S。
编辑(2020):
此方法不再起作用,请参阅此问题以供将来参考...
我找到了!我更改密码时忘记散列密码。我用这个查询来解决我的问题:
update user set password=PASSWORD('NEW PASSWORD') where user='root';
我忘记了PASSWORD('NEW PASSWORD')
,只是以纯文本形式输入了新密码。
在 MySQL 8.0.4+ 上
要更新当前的 root 用户:
select current_user();
set password = 'new_password';
要更新另一个用户:
set password for 'otherUser'@'localhost' = 'new_password';
在更新密码之前设置密码策略:
set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';
更新root密码的另一种/更好的方法:
mysql_secure_installation
您想坚持使用 5.x 身份验证,以便仍然可以使用旧版应用程序吗?
在my.cnf
文件中
default_authentication_plugin = mysql_native_password
要更新根:
set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';
在 MySQL 8 上,您需要指定密码哈希方法:
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'new-password';
对于 MySQL 5.7.6 及更高版本:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
对于 MySQL 5.7.5 及更早版本:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
对我来说,只有这些步骤可以帮助我在 8.0.19 版本上设置 root 密码:
mysql
SELECT user,authentication_string FROM mysql.user;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_pass_here';
FLUSH PRIVILEGES;
SELECT user,authentication_string FROM mysql.user;
如果您可以看到 root 用户的更改,那么它可以工作。来源:无法设置 root 密码 MySQL 服务器
你必须重设密码!Mac OS X(经过测试和工作)和 Ubuntu 的步骤:
停止 MySQL
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
sudo /usr/local/mysql/support-files/mysql.server start
您的新密码是“密码”。
对于当前最新的 MySQL 版本(8.0.16),这些答案都不适合我。
在查看了几个不同的答案并将它们组合在一起之后,这就是我最终使用的方法:
update user set authentication_string='test' where user='root';
使用mysqladmin命令行实用程序更改 MySQL 密码:
mysqladmin --user=root --password=oldpassword password "newpassword"
我尝试了 kta 的答案,但它对我不起作用。
我正在使用 MySQL 8.0。
这在 MySQL 命令行客户端(可执行文件mysql
)中对我有用:
SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'
这适用于 Mac 用户。
在 8.0.15(可能已经在该版本之前)上,PASSWORD() 函数不起作用。你所要做的:
确保您首先停止了 MySQL(上图)。以绕过权限的安全模式运行服务器:
sudo mysqld_safe --skip-grant-tables
将此 mysqld_safe 替换为您的 MySQL 路径,就像在我的情况下一样
sudo /usr/local/mysql/bin/mysqld_safe –skip-grant-tables
那么您必须执行以下步骤。
mysql -u root
UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;
然后
mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';
在 MySQL 5.7 中,密码被替换为“authentication_string”。采用
update user set authentication_string=password('myfavpassword') where user='root';
这么多评论,但我得到了这种方法的帮助:
sudo mysqladmin -u root password 'my password'
在我的情况下,安装后我得到了没有 root 用户密码的 MySQL 服务,我需要为我的安全设置密码。
我不时遇到的一个常见错误是我忘记了该-p
选项,因此请务必使用:
mysql -u root -p
现在只需使用:
SET PASSWORD FOR <user> = '<plaintext_password>'
因为'SET PASSWORD FOR <user> = PASSWORD('<plaintext_password>')'
已弃用,并将在未来的版本中删除。(2021 年 4 月 12 日警告)请SET PASSWORD FOR <user> = '<plaintext_password>'
改用。
更新 04/12 2021 AM 2:22:07 UTC/GMT -5 小时。
直接在mysql命令行中使用如下语句进行修改:
mysql> SET PASSWORD FOR'root'@'localhost' = PASSWORD('newpass');
或者1.终端进入MySQL的bin目录
cd /usr/local/mysql/bin
2.打开MySQL
mysql -u root -p
3.此时您可以使用您的默认密码
4.此时在MySQL中执行操作
show databases;
5.系统会提示您重置root用户密码。
那么如何重置root密码呢?我查了很多资料,但没有生效。
包括在安全模式下进入修改数据库,使用mysqladmin命令:“ Mysqladmin -u root password"your-new-password"
”等,都不行。
正确的步骤如下:
1.还在cd/usr/local/mysql/bin/
目录下
2.sudo su
输入后,系统会要求您输入计算机密码。
当你输入它时,什么都没有显示。输入后按回车
然后按回车
3.通过授权验证
sh-3.2# ./mysqld_safe --skip-grant-tables &
如果命令的执行被停止,此时执行已经完成,
直接回车,然后exit退出:
sh-3.2# exit
4.此时重新进入MySQL,无-p参数,无密码
./mysql -u root
5.选择数据库MySQL(这里的MySQL是指MySQL中的一个数据库,
MySQL中还有其他数据库,可以通过show databases查看;)
use mysql;
6.更新数据库表中root用户的密码:
update user set authentication_string=‘123456’ where User='root';
注意:这里的密码字段是authentication_string
,
不是password
网上流传的。
估计是MySQL后来更新了。
重新进入MySQL,使用刚才设置的密码,可以吗?
因为你刚刚设置了绕过授权认证,
无需密码即可直接登录MySQL。
我的笨办法是重启电脑,再次用密码登录MySQL,看看修改是否生效;
退出 WAMP 并停止所有 WAMP 服务。
打开记事本,然后输入:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('');
然后用任何名称将其保存到 C: 驱动器... 像这样 "c:/example.txt"
现在转到您的“wamp”文件夹:wamp → bin → mysql → mysql (your version) → bin
在我的例子中,路径是“C:\wamp\bin\mysql\mysql5.6.17\bin”。
现在复制您的路径,使用 ( Ctrl+ R) 运行 CMD,然后键入“cmd”( Enter)。
键入cd
,右键单击 CMD,然后粘贴路径 ( Enter)。
现在键入mysqld --init-file=C:\\example.txt
不带大括号的 ( ) 和 ( Enter)。
然后重新启动 PC 或打开任务管理器并杀死mysqld.exe。
启动 WAMP,您的密码将被删除...
对于 macOS 用户,如果忘记了 root 密码,thusharaK 的回答很好,但还有一些技巧:
如果您使用系统偏好来启动 MySQL 服务器端,只需
sudo mysqld_safe --skip-grant-tables
可能不适合你。
您必须确保命令行参数与系统启动配置相同。
以下命令对我有用:
/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so --skip-grant-tables
您可以使用
ps aux | grep mysql
检查你自己的。
或者只是使用交互式配置:
sudo mysql_secure_installation
在 Ubuntu 上,
sudo dpkg-reconfigure mysql-server-5.5
替换5.5
为您当前的版本,您将被要求输入新的 root 密码。