前言
看到題目大家應都會想,在 Debian 9 上安裝 Mysql?那不是很簡單的事兒嗎?直接 sudo apt install mysql-server
不就行了嗎?
沒想到遇到了幾個之前沒遇到的問題,耽誤了不少時間。
原來在 Debian 9 中,Mysql 已經被替換成了 MariaDB,所以和傳統的安裝 Mysql 有一些不一樣的地方。
安裝方法
首先我們還是可以用 sudo apt install mysql-server
這樣安裝上的,但是安裝上的還是 MariaDB,所以最好還是採用 sudo apt install mariadb-server
這樣吧。
安裝上之後,發現和傳統的不一樣,因爲沒有彈出設置密碼的那個藍色的界面,誤以爲直接可以空密碼登錄。直接嘗試 mysql -uroot -p
,發現 ERROR 1698 (28000): Access denied for user 'root'@'localhost'
。難道默認密碼不是空?查看 /etc/mysql/debian.cnf 中默認密碼確實是空。
第一反應是執行 mysqld_safe skip-grant-tables
,然後 use mysql;
,然後 update user set password=PASSWORD('mysql') where User='root';
。這樣確實可以解決問題,但是重啓之後莫名發現又登錄不了了。
懵逼一段時間後發現 MaraiDB 的默認密碼確實是空,但是隻能用 Root 用戶登錄
注意:這裏的用戶說的是 linux 系統的 Root 用戶,也就是說,你 sudo su 進入 Root 終端後,是可以正常登錄的,但是普通用戶卻無法登錄。(爲了區別一下,我把 Root 終端的首字母大寫,而 mysql 的 root 用戶首字母小寫)
大概明白了,所以我們不能圖方便一直使用 root 用戶了,正確的姿勢應該是這樣的:
首先是 sudo apt install mariadb-server
安裝上數據庫。
然後 sudo su 切換至 Root 終端,通過 mariadb -uroot -p
登錄到數據庫,如果默認密碼不是空的話,可以查看 '/etc/mysql/debian.cnf'。
這時候要做的是創建新用戶:create user 'admin'@'localhost' identified by 'mysql'
。
然後給新用戶設置權限:grant all on *.* to 'admin'@'localhost'
。
好了,我們又設置了一個方便的 "Root" 用戶,只不過改了名字叫做 admin。
PS:我發現在 Root 終端中,不管密碼輸入什麼都能正常連接數據庫...暈。