2017-05-07 96 views
-1

我需要在其上运行新的服务器自动检查。其中一项检查是检测是否设置了用户(或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的)

+0

你能与我们分享您的数据表吗?我们不能锻炼没有它 –

+0

列名,密码不密码 –

+1

尝试'authentication_string'作为列名,而不是关密码...的MySQL 5.7及以上没有一个名为'password'在mysql.user表中的列。 –

回答

3

的MySQL版本5.7或更高可是没有一个名为密码mysql.user表列。 MySQL版本5.7或更高版本使用authentication_string列代替。

所以你查询应该是

SELECT host, user, authentication_string FROM mysql.user 
+0

最后缺少';'。所以,如果该字段为空,则不需要密码,对吧?或登录被禁用? –

+0

@anatoly techtonik如果authentication_string是空密码不需要 –

+0

(注:这只是一个很小的扩展@RaymondNijland的答案) 如果你正在使用的MySQL版本> = 5.7,想知道如果'root'访问被保护通过密码,比你可以使用这个: 'mysql的-Nse “从mysql.user SELECT COUNT(*),其中用户= '根' 和authentication_string为空”' – andiba