一、ERROR 1698(28000):Access denied for user root@localhost錯誤
我的作業系統是ubuntu:
我的MySQL版本是:
安裝完成後,登入mysql的時候就出現瞭如下錯誤:
因為安裝的過程中沒讓設定密碼,可能密碼為空,但無論如何都進不去mysql。那麼該怎麼做呢
第一步
在ubuntu的terminal(也即終端)上輸入
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
進入到配置檔案,然後在這個配置檔案中的[mysqld]這一塊中加入skip-grant-tables這句話。
作用:就是讓你可以不用密碼登入進去mysql。
儲存:wq,退出。輸入:service mysql restart,重新啟動mysql。
第二步
在終端上輸入mysql -u root -p,遇見輸入密碼的提示直接回車即可,進入mysql
然後分別執行下面四句話:
1 use mysql; 然後敲回車 2 update user set authentication_string=password("你的密碼") where user="root"; 然後敲回車 3 flush privileges; 然後敲回車
4 quit;
第三步
重新進入到mysqld.cnf檔案中去把剛開始加的skip-grant-tables這條語句給註釋掉。
再返回終端輸入mysql -u root -p,應該就可以進入資料庫了。
二、ERROR 1524 (HY000): Plugin 'auth_socket' is not loaded
如果出現這個問題,還是需要像上個問題一樣,先把MySQL設定成無密碼狀態,也就是把上個問題中的第三步註釋的
skip-grant-tables
這句話在去掉註釋,讓它重新起效,並且還要重啟MySQL服務
service mysql restart
起效後輸入下面這兩行命令
1、use mysql; 2、select user,plugin from user;
從圖中可以看到在執行了select user,plugin from user;後,錯誤原因是因為plugin root的欄位是auth_socket,那我們改掉它為下面的mysql_native_password就行了。輸入:
update user set authentication_string=password("123456"),plugin='mysql_native_password' where user='root';
然後回車執行以下,再輸入select user,plugin from user;回車,我們能看到root使用者的欄位改成功了。
最後quit退出。再把 skip-grant-tables這句話註釋上
:
這個問題就解決了
三、ERROR 2003 - Can't connect to MySQL server on '192.168.100.109' (61 "Connection refused")
問題分析:
1、可能是網路連線問題。
解決方案:如果能ping 192.168.100.109,能ping通,則排除此情況。
2. 可能由於192.168.100.109主機上的my.cnf裡配置了skip_networking。
如果配置了skip_networking,這就意味著MySQL只能通過本機Socket連線(socket連線也是本地連線的預設方式),放棄對TCP/IP的監聽 當然也不讓本地程式連線MySQL(Connector/只能通過TCP/IP來連線)。
解決方案:還是使用命令 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 進入到mysqld.cnf檔案中,如果有skip_networking,註釋掉就行了
3、可能由於192.168.100.109主機上的my.cnf裡配置了bind_address=127.0.0.1,只允許本地socket連線
解決方案:也是使用命令 sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf 進入到mysqld.cnf檔案中,如果有bind_address=127.0.0.1,註釋掉就行了
4、還有可能是使用者名稱和密碼輸入錯誤
解決方案:重新輸入一下使用者名稱和密碼
5、還有可能是port埠的問題
解決方案:有可能192.168.100.109的主機上的MySQL port不是預設3306, 這樣我遠端連線時,沒有指定--port,用的是3306, 而192.168.100.109上沒有對3306進行監聽。
四、ERROR 1045 - Access denied for user 'root'@'localhost' (using password: YES)
出現access denied的原因有如下可能:
- mysql的伺服器停止
- 使用者的埠號或者IP導致
- mysql的配置檔案錯誤----my.ini等檔案
- root使用者的密碼錯誤
1、若MySQL已經沒有啟動,重啟MySQL伺服器即可
2、若使用者的埠號與IP(3306/3307)不一致:
3、要是mysql的配置檔案錯誤,只需要將init檔案停止,在重啟一下即可
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start
4、還有就是密碼錯誤,重新輸入密碼試試
五、ERROR 1130 (HY000): Host '192.168.100.102' is not allowed to connect to this MySQL server
問題原因:mysql伺服器出於安全考慮,預設只允許本地登入資料庫伺服器。
問題解決:登入mysql後,更改 "mysql" 資料庫裡的 "user" 表裡的 "host" 項,從"localhost"改稱"%",然後重啟mysql這樣就允許所有的遠端機器進行訪問了。
步驟1:修改mysql表
mysql -u root -p mysql>use mysql; mysql>update user set host = '%' where user = 'root'; mysql>flush privileges; mysql>select host, user from user; mysql>quit
步驟2:重啟mysql
service mysql restart
這個問題就解決了