我一直试图重置我的MySQL根密码。我已经运行了mysqld_safe --skip-grant-tables,更新了根密码,并检查了用户表以确保它在那里。重新启动mysql守护程序后,我尝试使用刚刚设置的新root密码登录,但仍然由于用户“ root”错误而拒绝访问。我也尝试完全删除并重新安装mysql(包括删除my.cnf文件),但还是没有运气。有人对我下一步的工作有什么建议吗?
提前致谢
我一直试图重置我的MySQL根密码。我已经运行了mysqld_safe --skip-grant-tables,更新了根密码,并检查了用户表以确保它在那里。重新启动mysql守护程序后,我尝试使用刚刚设置的新root密码登录,但仍然由于用户“ root”错误而拒绝访问。我也尝试完全删除并重新安装mysql(包括删除my.cnf文件),但还是没有运气。有人对我下一步的工作有什么建议吗?
提前致谢
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepassword');
是最安全的。
Answers:
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;
查看此页面以获取更多信息:重置根密码:Unix Systems
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
您可以在MySQL文档中找到“ 重置根密码 ”。
mysqld --initialize --console
这是WAMP v3.0.6及更高版本的更新答案
> UPDATE mysql.user
> SET authentication_string=PASSWORD('MyNewPass')
> WHERE user='root';
> FLUSH PRIVILEGES;
在MySQL 5.7.x版本中,mysql表中没有更多的密码字段。它已替换为authentication_string。(这用于终端/ CLI)
UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE user='root';
FLUSH PRIVILEGES;
(如果是PHPMyAdmin或任何Mysql GUI,则为此)
mysql.user
应该更新表的人之一。请注意,如果您正在使用任何其他数据库(由use
命令设置),则会收到错误消息,指出该表user
不存在。谢谢你,先生!
mysql.user
表。其他答案已经过时
找到了!更改密码时,我忘记对密码进行哈希处理。我使用此查询来解决我的问题:
update user set password=PASSWORD('NEW PASSWORD') where user='root';
我忘记了PASSWORD('NEW PASSWORD')
,只是以纯文本形式输入了新密码
请按照以下步骤操作。
第1步。停止mysql
第2步。 sudo mysqld_safe --skip-grant-tables
第三步。mysql -u root
第4步。use mysql;
步骤5。show tables;
步骤6。describe user;
步骤7。update user set authentication_string=password('1111') where user='root';
用密码1111登录
flush privileges
作为最后一步很重要。
我也在附近搜寻,可能有些答案适合某些情况,
我的情况是Ubuntu 18.04.2 LTS系统上的Mysql 5.7:
(获得root特权)
$ sudo bash
(为root数据库用户设置密码+分步实施安全性)
# 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.
在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';
其他/更好的更新根密码的方法:
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';
这对我有用-
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
https://dev.mysql.com/doc/mysql-windows-excerpt/5.7/zh-CN/reset-permissions-windows.html
您必须重设密码!Mac osx(已测试并工作)和ubuntu的步骤
停止MySQL
$ sudo /usr/local/mysql/support-files/mysql.server stop
以安全模式启动它:
$ sudo mysqld_safe --skip-grant-tables
(以上是整个命令)
在此过程完成之前,这将是一个持续执行的命令,因此请打开另一个外壳程序/终端窗口,无需密码即可登录:
$ 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 5.7中,密码被替换为'authentication_string'。
用
update user set authentication_string=password('myfavpassword') where user='root';
尝试了@kta的答案,但对我没有用。
我正在使用MySQL 8.0
这为我工作:
mysql> SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'
如此多的评论,但这种方法对我有所帮助:
sudo mysqladmin -u root password 'my password'
在我安装后的情况下,我获得了MySQL服务,但没有root用户密码,因此我需要为我的安全设置密码。
Aug 07 16:21:55 ubuntupc sudo[93250]: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/mysqladmin -u root password 'my password'
停止所有清洗服务,退出清洗。
打开记事本,然后输入> SET PASSWORD FOR'root'@'localhost'= PASSWORD('');
然后将其保存到c:驱动器,并使用任何名称..像这样的“ c:/example.txt”
现在转到您的“ wamp” falder wamp> bin> mysql> mysql(您的版本)> bin在我的情况下的路径是“ C:\ wamp \ bin \ mysql \ mysql5.6.17 \ bin”
现在复制您的路径,然后使用(ctrl + r)运行cmd,然后键入“ cmd”(输入)
键入cd,然后右键单击cmd并粘贴路径(输入),然后键入(mysqld --init-file = C:\ example.txt)不带花括号,然后输入(输入)
然后重新启动PC或打开taskmgr并杀死mysqld.exe
启动wamp,您的密码将被删除...
对于MacOS用户,如果您忘记了root密码,@ thusharaK的答案(https://stackoverflow.com/a/28601069/5628856)很好,但是还有一些技巧:
如果您使用系统偏好设置来启动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
检查自己的。
在Ubuntu上,
sudo dpkg-reconfigure mysql-server-5.5
替换5.5
为当前版本,系统将要求您输入新的root密码。