阿里云LNMP建站配置,配置MySQL的安全性遇到temporary password临时密码登不进去的问题

MySQL版本

在阿里云上根据手动部署LNMP环境(Alibaba Cloud Linux 2)中提示的步骤一步步安装的。

安装的MySQL版本是

mysqld Ver 5.7.33 for Linux on x86_64 (MySQL Community Server (GPL))

问题描述

根据手动部署LNMP环境(Alibaba Cloud Linux 2)一步步进行到“步骤六:配置MySQL”的时候,他采用的方法是先使用

grep 'temporary password' /var/log/mysqld.log

命令获取临时登陆密码,然后使用

mysql_secure_installation

命令配置MySQL安全性的方式来进行登陆的。

按照教程的操作,成功获取了temporary password临时密码,然而这个临时密码在mysql_secure_installation的时候根本登不进去。一直报错:

Error: Access denied for user 'root'@'localhost' (using password: YES)

使用

mysql -uroot -p

登陆MySQL,输入临时密码,同样得到报错,这次的报错是:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

解决方法

在网上找了很多方法,基本思路都是按照如下步骤解决:

  1. 通过 vi /etc/my.cnf进入my.cnf配置文件;
  2. 在[mysqld]底下,加入一行 skip-grant-tables,以跳过安全验证;
  3. systemctl restart mysqld重启MySQL;
  4. mysql -uroot -p登陆MySQL,输入任意密码进入;
  5. 输入use mysql;进入名为mysql的数据库;
  6. 输入UPDATE user SET password=PASSWORD("你自己的密码") WHERE user='root';进行密码修改;
  7. 输入quit;退出MySQL;
  8. 重复步骤1;
  9. 删除刚才加入到[mysqld]下面的 skip-grant-tables,退出vim,重启MySQL;
  10. mysql -uroot -p输入刚才设置的新密码,登陆MySQL。

然而这个办法尝试了多次,都是在步骤6进行完以后报错

ERROR 1054 (42S22): Unknown column 'password' in 'field list'

都快疯了!!!!

偶然的机会,找到了CSDN上一篇点赞量很少的文章,提到

原来是MySQL5.7的mysql数据库下已经没有password这个字段了,password字段改成了
authentication_string

有句妈卖批特别想喊出来!!!!
按照这篇文章的说法,将步骤6中的命令改成了:

update mysql.user set authentication_string=password('HJZ@bb1314') where user='root';

重新操作一遍。一下子就成功了!

PS

后面用新修改的密码登陆MySQL的时候,可以登陆,但进行一些操作的时候,有如下warning:

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

意思是说,你刚才修改的新密码其实是一个初始密码,这里还要求你要换个密码才能继续登陆。

这就跟手动部署LNMP环境(Alibaba Cloud Linux 2)“步骤六:配置MySQL”接上了。后面的按照文档要求,继续mysql_secure_installation命令即可。

血和泪的教训

  1. 在查找解决问题的办法时,一定要注意软件版本的问题。不同版本的软件,对应的字段名称、操作命令很有可能是不同的,所以百度的时候,尽量加上软件版本号;

  2. 查百度的时候,最好有针对性的查报错信息。这样得到的答案是最有针对性的。

你可能感兴趣的:(阿里云LNMP建站配置,配置MySQL的安全性遇到temporary password临时密码登不进去的问题)