測試的Linux操作系統是Ubuntu 18.04 LTS,MySQL版本如下:linuxidc@linuxidc:~/www.linuxidc.com$ mysql --versionmysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wra...
測試的Linux操作系統是Ubuntu 18.04 LTS,MySQL版本如下:
linuxidc@linuxidc:~/www.linuxidc.com$ mysql --version
mysql Ver 14.14 Distrib 5.7.27, for Linux (x86_64) using EditLine wrapper
安裝完成后,登錄MySQL時出現如下錯誤:
linuxidc@linuxidc:~/www.linuxidc.com$ mysql -u root -p
Enter password:
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
因為安裝的過程中沒讓設置密碼,可能密碼為空,但無論如何都進不去MySQL。
那么該怎么做呢,接下來就將這個解決方法總結記錄一下。
在Ubuntu終端輸入如下命令
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
進入到mysqld.cnf配置文件,然后在這個配置文件中的[mysqld]這一塊中加入skip-grant-tables這句話。
[mysqld]
#
# * Basic Settings
#
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking
skip-grant-tables
作用:就是讓你可以不用密碼登錄進去MySQL。
保存:wq,退出。
輸入如下命令:
linuxidc@linuxidc:~/www.linuxidc.com$ service mysql restart
重新啟動MySQL。如下圖:
在Ubuntu終端上輸入
linuxidc@linuxidc:~/www.linuxidc.com$ mysql -u root -p
遇見輸入密碼的提示直接回車即可,進入MySQL后,分別執行下面三句話:
linuxidc@linuxidc:~/www.linuxidc.com$ use mysql; #然后回車
linuxidc@linuxidc:~/www.linuxidc.com$ update user set authentication_string=password("linuxidc") where user="root"; #然后回
說明:本例的密碼是linuxidc
linuxidc@linuxidc:~/www.linuxidc.com$ flush privileges; #然后回車
結果如下圖:
然后輸入quit,退出MySQL
重新進入到mysqld.cnf文件中去把剛開始加的skip-grant-tables這條語句給注釋掉。如下圖:
再返回終端輸入mysql -u root -p,應該就可以進入數據庫了。
如果此時還是報出錯誤如下
linuxidc@linuxidc:~/www.linuxidc.com$ mysql -u root -p
Enter password:
ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded
那么就需要返回第3步中,把注釋掉的那條語句重新生效(就是刪除#符號),重新進入mysql中,先選擇一個數據庫(use mysql;),然后輸入select user,plugin from user;,看下圖:
從圖中可以看到在執行了select user,plugin from user;后,錯誤原因是因為plugin root的字段是auth_socket,那我們改掉它為下面的mysql_native_password就行了。輸入:
update user set authentication_string=password("linuxidc"),plugin='mysql_native_password' where user='root';
然后回車執行以下,再輸入select user,plugin from user;回車,我們能看到root用戶的字段改成功了。如下圖:
最后quit退出。返回執行第3步。
那么這個問題就完全解決了。
在MySQL 8版本中,上面更新代碼的語句似乎有所變化,那個句法會被告知是錯誤的,這里我貼一下沒有語法錯誤的:
ALTER user 'root'@'localhost' IDENTIFIED BY 'newpassward'; //newpassward 新密碼
將這句話對應到上面第二步即可。
如果執行本語句出現The MySQL server is running with the --skip-grant-tables option so it cannot execute this statemen這個錯誤,解決如下:
先flush privileges,然后再執行上面修改密碼的語句。
來源:本文內容搜集或轉自各大網絡平臺,并已注明來源、出處,如果轉載侵犯您的版權或非授權發布,請聯系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權及插圖屬于原作者。
Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發布查詢平臺保留所有權利
蘇公網安備32010402000125
蘇ICP備14051488號-3技術支持:南京博盛藍睿網絡科技有限公司
南京思必達教育科技有限公司版權所有 百度統計