1. 程式人生 > >python資料庫-安裝問題總結(48)

python資料庫-安裝問題總結(48)

 

一、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的原因有如下可能:

    1.  mysql的伺服器停止
    2.   使用者的埠號或者IP導致  
    3.   mysql的配置檔案錯誤----my.ini等檔案
    4.   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

這個問題就解決了

&n