我的操作系統是ubuntu18.04,以下是我的mysql版本: 安裝完成後,登錄mysql的時候就出現瞭如下錯誤: 因為安裝的過程中沒讓設置密碼,可能密碼為空,但無論如何都進不去mysql。 那麼該怎麼做呢,接下來就將這個解決方法自我總結記錄一下。 step1:在ubuntu的terminal(也 ...
我的操作系統是ubuntu18.04,以下是我的mysql版本:
安裝完成後,登錄mysql的時候就出現瞭如下錯誤:
因為安裝的過程中沒讓設置密碼,可能密碼為空,但無論如何都進不去mysql。
那麼該怎麼做呢,接下來就將這個解決方法自我總結記錄一下。
step1:在ubuntu的terminal(也即終端)上輸入sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf,進入到這個配置文件,然後在這個配置文件中的[mysqld]這一塊中加入skip-grant-tables這句話。
1 [mysqld] 2 # 3 # * Basic Settings 4 # 5 user = mysql 6 pid-file = /var/run/mysqld/mysqld.pid 7 socket = /var/run/mysqld/mysqld.sock 8 port = 3306 9 basedir = /usr 10 datadir = /var/lib/mysql 11 tmpdir = /tmp 12 lc-messages-dir = /usr/share/mysql 13 skip-external-locking 14 character-set-server=utf8 15 collation-server=utf8_general_ci 16 skip-grant-tables
作用就是讓你可以不用密碼登錄進去mysql。
保存:wq,退出。輸入:service mysql restart,重新啟動mysql。
step2:在終端上輸入mysql -uroot -p,遇見輸入密碼的提示直接回車即可,進入mysql後,分別執行下麵三句話:
1 use mysql; 然後敲回車 2 update user set authentication_string=password("你的密碼") where user="root" 然後敲回車 3 flush privileges 然後敲回車
結果如下圖:
然後輸入quit,退出mysql。
step3:重新進入到mysqld.cnf文件中去把剛開始加的skip-grant-tables這條語句給註釋掉。
1 [mysqld] 2 # 3 # * Basic Settings 4 # 5 user = mysql 6 pid-file = /var/run/mysqld/mysqld.pid 7 socket = /var/run/mysqld/mysqld.sock 8 port = 3306 9 basedir = /usr 10 datadir = /var/lib/mysql 11 tmpdir = /tmp 12 lc-messages-dir = /usr/share/mysql 13 skip-external-locking 14 character-set-server=utf8 15 collation-server=utf8_general_ci 16 # skip-grant-tables
再返回終端輸入mysql -uroot -p,應該就可以進入資料庫了。
step4:如果此時還是報出錯誤,那麼就需要返回step3中,把註釋掉的那條語句重新生效(就是刪除#符號),重新進入mysql中,先選擇一個資料庫(use mysql),然後輸入select user,plugin from user,看下圖:
從圖中可以看到在執行了select user,plugin from user後,錯誤原因是因為plugin root的欄位是auth_socket,那我們改掉它為下麵的mysql_native_password就行了。輸入:
1 update user set authentication_string=password("ln122920"),plugin='mysql_native_password' where user='root'
然後回車執行以下,再輸入select user,plugin from user;回車,我們能看到root用戶的欄位改成功了。
最後quit退出。返回執行step3。
那麼這個問題就完全解決了。
參考鏈接:http://www.cnblogs.com/py1612919884/p/9327015.html