我需要在其上運行新的服務器自動檢查。其中一項檢查是檢測是否設置了用戶(或root
)密碼。但..如何檢查用戶密碼是否在mysql中設置?
mysql> SELECT host, user, password FROM mysql.user;
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
Server版本:5.7.18-0ubuntu0.17.04.1(Ubuntu的)
我需要在其上運行新的服務器自動檢查。其中一項檢查是檢測是否設置了用戶(或root
)密碼。但..如何檢查用戶密碼是否在mysql中設置?
mysql> SELECT host, user, password FROM mysql.user;
ERROR 1054 (42S22): Unknown column 'password' in 'field list'
Server版本:5.7.18-0ubuntu0.17.04.1(Ubuntu的)
的MySQL版本5.7或更高可是沒有一個名爲密碼mysql.user表列。 MySQL版本5.7或更高版本使用authentication_string列代替。
所以你查詢應該是
SELECT host, user, authentication_string FROM mysql.user
最後缺少';'。所以,如果該字段爲空,則不需要密碼,對吧?或登錄被禁用? –
@anatoly techtonik如果authentication_string是空密碼不需要 –
(注:這只是一個很小的擴展@RaymondNijland的答案) 如果你正在使用的MySQL版本> = 5.7,想知道如果'root'訪問被保護通過密碼,比你可以使用這個: 'mysql的-Nse 「從mysql.user SELECT COUNT(*),其中用戶= '根' 和authentication_string爲空」' – andiba
你能與我們分享您的數據表嗎?我們不能鍛鍊沒有它 –
列名,密碼不密碼 –
嘗試'authentication_string'作爲列名,而不是關密碼...的MySQL 5.7及以上沒有一個名爲'password'在mysql.user表中的列。 –