Ubuntu18.04 下安裝MySQL密碼問題
在之前的ubuntu版本中,我們通過apt install mysql-server mysql-client
這樣的方式來安裝mysql的時候,會提醒我們設置root用戶密碼,但是在18.04中不再提示了,所以我們就不知道root密碼是啥,導致接下來要做的事情不能繼續,經過我的搜索,找到了兩個解決辦法,任選其一:
如果你的MySQL有問題,建議先卸載:
apt autoremove mysql-client mysql-server --purge -y
然後再安裝:
apt install mysql-client mysql-server -y
這個時候在系統的root賬戶下,直接輸入:mysql
就可以進入,但是在普通用戶下輸入mysql -u root -p
後就不能進入,這時參考以下的兩個解決辦法,以下兩種辦法都是在系統的普通用戶下進行的。
方法一
在MySQL安裝的時候,系統自動生成了一個配置文件,裏面有一個初始的賬戶和密碼:
sudo cat /etc/mysql/debian.cnf
然後這個文件裏面有默認的用戶名和密碼,用這個登錄系統:
mysql -u 用戶名 -p
進入MySQL命令提示符下,輸入:
update mysql.user set authentication_string=PASSWORD("密碼") where User="root";
# 這個操作是在生成一個用戶,但是有一個wraning
解決warning:
update mysql.user set plugin="mysql_native_password";
接着,刷新和退出:
flush privileges;
exit;
再重啓一下MySQL服務,然後就可以正常的mysql -u root -p
登錄了
方法二
首先在系統的shell中輸入:
sudo mysql_secure_installation
根據提示,進行初始化密碼設置。
在系統普通賬戶下,直接輸入sudo mysql
,進入MySQL命令提示符,然後輸入:
SELECT user,authentication_string,plugin,host FROM mysql.user;
這時候我們看到:
Output
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
登錄的方式不是密碼,而是auth_socket
方式進行登錄.
我們修改這個方式即可,繼續在MySQL的命令行輸入:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密碼';
然後刷新:
FLUSH PRIVILEGES;
這時,也可以正常登錄了。