在服務器只能使用【無密碼】登陸,即
要么直接mysql進入數據庫,要么mysql -u root -p,然后不寫密碼回車進入數據庫(但是之前一開始有設置密碼了!!!之前是按這個步驟來的),
然后,登陸后只能看到information_schema和test兩個數據庫,而且沒了很多權限。
另外,能在本地連接遠程服務器數據庫可以使用root和密碼登陸連接,能看到mysql數據庫的user表。
也就是說,在服務器的數據庫的root已經失去了超級權限!!!
原因:
一開始安裝mysql的時候沒有把localhost的空用戶刪除。
導致root有兩種登錄方式,一個是基於localhost的,另一個就是在其它任意主機登錄的,
你設置的密碼是基於IP地址登錄時的密碼,而你在本機運行mysql -u root -p時,默認檢查的是localhost方式
如何解決:
解決具體操作步驟:
第一種方法:
在服務器中,
先關閉mysql:service mysqld stop
然后,mysqld_safe --skip-grant-tables
(如果是mariadb,則使用systemctl restart mariadb.service)
打開mysql
刪掉已經存在了host為localhost的記錄,則先(一定要一開始就!!!)刪除該記錄,delete from user where host='localhost';
第二種方法:
如果你已經在本地主機遠程連接數據庫的root用戶,
那么直接在mysql.user里面刪除localhost的空用戶
然后再服務器上面重啟數據庫服務即可