最近在嘗試基於Ubuntu 16.04.1 LTS server 部署openstack ,在部署的過程中遇到mariadb 無法正常鏈接。
問題參照openstack 官方文檔安裝mariadb,安裝後遇到無法在本地登錄的問題
$mysql -u root -p
$mysql -h localhost -u root -p
報錯如下
mysql (mariadb) ERROR 1698 (28000): Access denied for user 'root'@'localhost'
但使用如下方式卻可以登錄
$sudo mysql -u root
遂卸載mariadb,但卸載方式比較暴力,導致再次安裝時報出類似如下錯誤
dpkg: warning: while removing mariadb-server-core-10.0, directory '/usr/share/mysql' not empty so not removed
dpkg: error processing package mariadb-server-10.0 (--configure): subprocess installed post-installation script returned error exit status 1 Errors were encountered while processing: mariadb-server-10.0 E: Sub-process /usr/bin/dpkg returned an error cod
E: Sub-process /usr/bin/dpkg returned an error code (1)
解決方案先說下卸載方式,通過包管理器正確卸載軟件的方式如下
apt purge mariadb* mysql*
apt autoremove
apt autoclean
如重新安裝時遇上述錯誤,可嘗試強制安裝(apt install -f)、重新安裝(apt --reinstall install)、正確卸載方式(apt purge mariadb && apt autoremove && apt autoclean)
如遇依賴警告,直接安裝對應依賴
接下來說說對mariadb的解決方案
通過反復多次嘗試,最後通過安裝更高版本解決。
之前的安裝是參照openstack 官方文檔,安裝的是mariadb-server-10.0,多次嘗試後問題仍存在,就在想到mariadb官方找找文檔看。
結果文檔沒找到,反倒找到了官方的安裝文檔,遂參考mariadb官方文檔安裝了最新穩定版本mariadb-server-10.1
在安裝過程中,新版會要求設置mariadb root用戶口令,而10.0版本卻沒有。同樣在卸載過程中,也提示是否確認刪除所有數據庫文件,這都是10.0版本沒有的。
安裝好10.1版本mariadb後,就可正常連接了。
總結通過反復嘗試,基本可以判斷是安裝的mariadb版本(或對應系統)不正確,同時也可能是10.0版本存在這種問題。
如再次遇到類似的問題,可以嘗試安裝軟件的不同版本,或變更安裝的路徑。
本文出自 “morrowind” 博客,請務必保留此出處http://morrowind.blog.51cto.com/1181631/1834078