MySQL版本
在阿里云上根據手動部署LNMP環(huán)境(Alibaba Cloud Linux 2)中提示的步驟一步步安裝的。
安裝的MySQL版本是
mysqld Ver 5.7.33 for Linux on x86_64 (MySQL Community Server (GPL))
問題描述
根據手動部署LNMP環(huán)境(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)
解決方法
在網上找了很多方法,基本思路都是按照如下步驟解決:
- 通過
vi /etc/my.cnf進入my.cnf配置文件; - 在[mysqld]底下,加入一行
skip-grant-tables,以跳過安全驗證; -
systemctl restart mysqld重啟MySQL; -
mysql -uroot -p登陸MySQL,輸入任意密碼進入; - 輸入
use mysql;進入名為mysql的數據庫; - 輸入
UPDATE user SET password=PASSWORD("你自己的密碼") WHERE user='root';進行密碼修改; - 輸入
quit;退出MySQL; - 重復步驟1;
- 刪除剛才加入到[mysqld]下面的
skip-grant-tables,退出vim,重啟MySQL; -
mysql -uroot -p輸入剛才設置的新密碼,登陸MySQL。
然而這個辦法嘗試了多次,都是在步驟6進行完以后報錯
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
都快瘋了!?。?!
偶然的機會,找到了CSDN上一篇點贊量很少的文章,提到
原來是MySQL5.7的mysql數據庫下已經沒有password這個字段了,password字段改成了
authentication_string
有句媽賣批特別想喊出來?。。。?/strong>
按照這篇文章的說法,將步驟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.
意思是說,你剛才修改的新密碼其實是一個初始密碼,這里還要求你要換個密碼才能繼續(xù)登陸。
這就跟手動部署LNMP環(huán)境(Alibaba Cloud Linux 2)“步驟六:配置MySQL”接上了。后面的按照文檔要求,繼續(xù)mysql_secure_installation命令即可。
血和淚的教訓
在查找解決問題的辦法時,一定要注意軟件版本的問題。不同版本的軟件,對應的字段名稱、操作命令很有可能是不同的,所以百度的時候,盡量加上軟件版本號;
查百度的時候,最好有針對性的查報錯信息。這樣得到的答案是最有針對性的。