我知道这是更改或重置mysql root密码的最安全的方法。我这样做是因为安装程序中有8次不会提示我输入root密码。
所以我运行命令:
sudo /etc/init.d/mysql stop
sudo mysqld_safe --skip-grant-tables &
sudo mysql -u root
use mysql;
然后,根据您使用的mysql或maria版本,键入:
update user set password=PASSWORD("mynewpassword") where User='root';
或
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
在我的情况下,我键入了第一个。然后我刷新权限:
flush privileges;
然后输入:quit
退出mysql。
此时一切顺利。然后我重启mysql服务器:
sudo /etc/init.d/mysql start
我从终端得到“OK”。但是,当我尝试以root身份登录时
我得到了令人愉快的错误信息:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
我100%确信我输入了正确的密码。为什么会这样?
答案 0 :(得分:0)
通过备份所有重要数据并重新安装操作系统来解决问题。事实证明,我有一些破坏的软件包影响了mysql身份验证的工作方式。修复损坏的软件包的标准步骤没有用,所以我擦掉了HDD并重新开始。
安装MySQL没有任何打嗝,甚至提示设置root密码。现在,MySQL身份验证就像魅力一样。
答案 1 :(得分:0)
尝试一下:-它对我有用.. !!
service mysql stop
mysqld_safe --skip-grant-tables > /dev/null 2>&1 &
mysql -u root -e "use mysql; update user set password=PASSWORD('NEW-PASSWORD') where User='root'; flush privileges;"
service mysql restart
注意:您可能需要在mysqld_safe
命令之后等待,然后才能运行后续的mysql
命令。
现在运行:-mysql -u root -p