問題復現
版本信息:
- OS版本:Ubuntu Server 16.04.6 LTS
- TestLink版本:1.9.17
- MySQL版本:8.0.16
- PHP版本:7.0.33
- Apache2版本:2.4.18
TestLink安裝過程第四步中Creating Testlink DB user `root`時報錯,錯誤信息如下:
==============================================================================
DB Access Error - debug_print_backtrace() OUTPUT START
ATTENTION: Enabling more debug info will produce path disclosure weakness (CWE-200)
Having this additional Information could be useful for reporting issue to development TEAM.
==============================================================================
排查問題
- 查看日誌
vim /var/www/html/testlink/logs/userlog0.log
定位到錯誤信息:
ERROR ON exec_query() - database.class.php <br />1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘IDENTIFIED BY ‘123456’’ at line 1 - GRANT SELECT, UPDATE, DELETE, INSERT ON `testlink`.* TO ‘root’@‘localhost’ IDENTIFIED BY ‘123456’<br />THE MESSAGE : GRANT SELECT, UPDATE, DELETE, INSERT ON `testlink`.* TO ‘root’@‘localhost’ IDENTIFIED BY ‘123456’
Query failed: errorcode[1064]
errormsg:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘IDENTIFIED BY ‘123456’’ at line 1
- 分析錯誤原因
mysql 8 版本起已經將創建賬戶和賦予權限的方式分開了,因此需要將日誌中所描述的命令改爲:
GRANT SELECT, UPDATE, DELETE, INSERT ON \`testlink\`.* TO 'root'@'localhost';
- 解決方案
找到並修改執行上述命令的腳本:
sudo vim /var/www/html/testlink/install/installUtils.php
將468行註釋掉,該行是給sql命令加上“IDENTIFIED BY ‘123456’”,即改爲:
//$stmt .= " IDENTIFIED BY '" . $passwd . "'";
然後重新執行安裝過程即可。