MySQL 5.7不能登入的問題

來源:互聯網
上載者:User

MySQL 5.7不能登入的問題

先在MySQL出到了5.7版本,經理讓用最新的版本搭建LNMP,搭建過程遇到很多問題,今天簡要說說MySQL的一個問題:

安裝完成後,無法登陸mysql,按理說新安裝後預設是以root使用者登入,而且密碼應該為空白,所以可以直接進的,但是出現了下面的問題

[root@bogon mysql]# bin/mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

[root@bogon mysql]# bin/mysqladmin -uroot password
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'

此時我的反應是會不會為了安全起見,新版mysql預設有密碼,我一查還真是,mysql預設安裝會有密碼產生,密碼檔案直接寫在 log-error 記錄檔中(在5.6版本中是放在 root/.mysql_secret 檔案裡,更加隱蔽,不熟悉的話可能會無所適從),但是我去查看了log_error,但是沒有找到密碼,而且也沒有root/.mysql_secret 檔案;

之後我嘗試在設定檔中加了skip-grant-tables,重啟之後可以進去了;所以一定是密碼的問題,所以我開始改密碼

mysql> update user set password=password('123456') where user='root';
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> update user set password=password('123456') where user='root';
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

但是出現了這種情況,改不了,網上說:官方的方式,筆者無論是否使用--skip-grant-tables啟動mysql都測試失敗,親們可以測試:
shell>mysql -uroot -p'password'    #password即.mysql_secret裡的密碼
mysql>SET PASSWORD = PASSWORD('newpasswd');

但是根據上面的操作,官方說明也不是太靠譜。。。。。。。。。

於是我又開始搜尋各種解決辦法,又在朋友的協助下,終於找到解決的辦法-----------------------

我們把root@localhost使用者刪了,然後有建立了這個使用者

mysql> delete from mysql.user where user='root' and host='localhost';
Query OK, 1 row affected (0.01 sec)
mysql> select user,host from mysql.user;
+-----------+-----------+
| user      | host      |
+-----------+-----------+
| mysql.sys | localhost |
+-----------+-----------+
1 row in set (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on *.* to 'root'@'localhost' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> select user,host from mysql.user;
+-----------+-----------+
| user      | host      |
+-----------+-----------+
| mysql.sys | localhost |
| root      | localhost |
+-----------+-----------+
2 rows in set (0.01 sec)

但是到這還是不行,你用下面的命令會發現一個情況

mysql> select * from mysql.user\G;

Grant顯示N--mysql許可權架構體系(應該是這麼說)是關閉的,so.............

mysql> grant all on *.* to 'root'@'localhost' identified by '123456' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)

退出mysql,將skip-grant-tables注掉,然後重啟mysql。此時在登陸就可以了。

-----------------------------------------------------------------------------------------------

當然許多朋友的錯可能只跟我類似,但是並不是相同,如果上述方法還是不行,可以跟我留言,我們可以探討。

當然我對mysql還並不是太熟,我在想刪除使用者,如果裡邊有資料怎麼辦,其實以防萬一備份一下就好了;而我朋友告訴我其實刪除使用者和建立使用者不影響資料,沒事,因為我沒有實際操作,所以不好保證,其實備份一下更好更安全,不影響資料那對我們更好啦。

本文永久更新連結地址:

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.