1. 程式人生 > >ubuntu 16.04安裝mysql5.7.17後,登入時出現ERROR 1045 (28000): Access denied for user 'root'@'localhost' 問題解決!

ubuntu 16.04安裝mysql5.7.17後,登入時出現ERROR 1045 (28000): Access denied for user 'root'@'localhost' 問題解決!

一、問題描述

    今天,筆者為了練習sql,在ubuntu16.04上安裝了mysql。筆者在網上搜索了在ubuntu16.04安裝mysql的步驟,並跟著步驟一步步操作,然而,讓筆者無法明白的是,網上說在安裝mysql的過程會彈出輸入密碼的視窗,然而筆者在安裝的過程中沒有彈出任何視窗,而且也沒有報錯。正當筆者在登入mysql時,問題就出現了,如圖:

如圖,筆者嘗試多種輸入方式,但都得到了一個同樣地令人憂傷的結果,ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
為了明白這個問題,筆者又在網上廣泛搜尋,從

MySQL ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)的真正原因
這條連結找到了問題產生的原因,然而筆者學識尚淺,看得不是很懂,但筆者還是要解決問題的呀,於是就換個話題搜尋,既然筆者不知道密碼,那麼我就以“忘記root密碼”為搜尋物件,於是找到了
ubuntu 16.04 下重置 MySQL 5.7 的密碼(忘記密碼)
然而,到了這裡,筆者還是不能解決問題,因為

筆者的配置檔案/etc/mysql/my.cnf下沒有[mysqld]這一段啊

後來,筆者又在網上折騰了許久,終於在/etc/mysql/mysql.conf.d/mysqld.cnf 這個檔案裡找到了[mysqld]這一段,感動啊


至此筆者認為,mysql5.7.17將原先意義的my.cnf改為mysqld.cnf,並放在/etc/mysql/mysql.conf.d/路徑下。

到此,筆者遇到問題總算解決了,真是開心呀!

下面筆者介紹自己的mysql安裝過程和問題的具體解決過程。

二、mysql安裝過程

在ubuntu終端下依次輸入命令:

    $  sudo apt update

    $ sudo apt-get install mysql-server mysql-client
     

三、問題解決過程

1.開啟/etc/mysql/mysql.conf.d/mysqld.cnf 檔案,命令如下

    $ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

2.找到[mysqld]段,並加入一行“skip-grant-tables”,如下圖,

3.重啟mysql服務,用空密碼進入mysql管理命令列,切換到mysql庫,操作命令如下,

    $ mysql

        Welcome to the MySQL monitor.  Commands end with ; or \g. 

    mysql> use mysql
        Reading table information for completion of table and column names
        You can turn off this feature to get a quicker startup with -A
        Database changed

    mysql> update mysql.user set authentication_string=password('newpass') where user='root' and Host ='localhost';
        Query OK, 1 row affected, 1 warning (0.00 sec)
        Rows matched: 1  Changed: 1  Warnings: 1

    mysql> update user set plugin="mysql_native_password"; 
        Query OK, 0 rows affected (0.00 sec)
        Rows matched: 3  Changed: 0  Warnings: 0

    mysql> flush privileges;
        Query OK, 0 rows affected (0.01 sec)

    mysql> quit;
        Bye

4.回到sudo vi  /etc/mysql/mysql.conf.d/mysqld.cnf,把剛才加入的那一行“skip-grant-tables”註釋或刪除掉。

5.再次重啟mysql服務sudo service mysql restart,使用新的密碼登陸,修改成功。

    $ mysql -u root -p new_pass  
        Welcome to the MySQL monitor.  Commands end with ; or \g.  
    mysql> 
--------------------- 
作者:Nancyse 
來源:CSDN 
原文:https://blog.csdn.net/learner_lps/article/details/62887343 
版權宣告:本文為博主原創文章,轉載請附上博文連結!