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