本文目錄一覽:
mysql連接數據庫失敗,請確定數據庫用戶名,密碼設置正確
現象
一線的工程師反映了一個奇怪的現象,剛剛從 MySQL 官網上下載了一個 MySQL 5.7.31。安裝完成後,發現使用任何密碼都能登陸 MySQL,修改密碼也不管用,重新啟動 MySQL 也不能解決。
分析
懷疑使用了 –skip-grant-tables 使用 mysqld –print-defaults 檢查,沒有發現。
檢查登陸用戶,都是 root@localhost,說明和 proxy user 沒有關係。
使用 mysql –print-defaults 檢查客戶端是否設置默認的用戶和密碼,沒有發現。
檢查數據庫中的用戶和密碼的相關字段:
發現一切都正常,再檢查 plugin 字段,發現只有 root 用戶是 auth_socket ,其它的用戶都是 mysql_native_password,問題可能就出在這兒。
對 auth_socket 驗證插件不了解,感覺是這個插件不安全,使用下面的命令修改後,問題解決:
update user set plugin=”mysql_native_password” where user=’root’;
auth_socket 驗證插件的使用場景
問題解決後,又仔細研究了一下 auth_socket 這個插件,發現這種驗證方式有以下特點:
首先,這種驗證方式不要求輸入密碼,即使輸入了密碼也不驗證。這個特點讓很多人覺得很不安全,實際仔細研究一下這種方式,發現還是相當安全的,因為它有另外兩個限制;
只能用 UNIX 的 socket 方式登陸,這就保證了只能本地登陸,用戶在使用這種登陸方式時已經通過了操作系統的安全驗證;
操作系統的用戶和 MySQL 數據庫的用戶名必須一致,例如你要登陸MySQL 的 root 用戶,必須用操作系統的 root用戶登陸。
auth_socket 這個插件因為有這些特點,它很適合我們在系統投產前進行安裝調試的時候使用,而且也有相當的安全性,因為系統投產前通常經常同時使用操作系統的 root 用戶和 MySQL 的 root 用戶。當我們在系統投產後,操作系統的 root 用戶和 MySQL 的 root 用戶就不能隨便使用了,這時可以換成其它的驗證方式,可以使用下面的命令進行切換:
ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘test’;
為什麼登陸了本地mysql不顯示mysql數據庫
打開控制面板,用小圖標的方式查看,找到管理工具
打開管理工具,找到服務
如果是mysql,在服務中找到mysql,點擊啟動
如果是SqlServer,則找到SqlServer開頭的服務,然後找到服務SqlServer MM+XXXX(因為我現在安裝的是mysql,所以具體的服務名稱忘了,但是絕對是M開頭的),如果沒有那個服務,則我也沒辦法了,你試試將所有SqlServer有關的服務都開啟,能連接的可能性也不大
5
左上角會顯示出這個服務已經啟動,這個時候再連接數據庫就會成功了
php連接mysql時沒有數據庫的用戶名和密碼怎麼辦?
用戶名為root,密碼為空,添一個空字符串就好,這個是默認的。你可以自己重新去修改。
原創文章,作者:RCLAQ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/317174.html