如何在Linux服务器上从命令行测试MySQL凭据?
解决方法:
对于以下内容,我们假设您使用用户名myuser登录
连接到mysql后,应运行以下查询:
SELECT USER(),CURRENT_USER();
> USER()报告了您如何尝试在MySQL中进行身份验证
> CURRENT_USER()报告如何允许您在MySQL中进行身份验证
有时,他们是不同的.这可以让您深入了解允许您登录mysql的原因.
这是您需要运行的另一个查询:
SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';
这将向您显示允许您以myuser身份登录的方式.
如果您看到’myuser’@’localhost’,那么您可以从数据库服务器中进行身份验证.
如果您看到’myuser’@’127.0.0.1’并且没有看到’myuser’@’localhost’,那么您可以再次从数据库服务器中进行身份验证,但必须从命令行指定–protocol = tcp.
如果您看到’myuser’@’%’,那么您可以从任何服务器进行远程登录.
如果您看到’myuse’r @ ’10 .20.30,%’,那么您只能从10.20.30.%netblock进行远程登录.
一旦你看到’mysql.user’对你的用户有什么,你可能想要以一种方式而不是另一种方式允许或限制myuser来自logggin.
如果您只想检查myuser的密码是否为password,则可以执行以下操作:
SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');
您可以从命令行中进行检查,如下所示:
PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`
如果您不是root并且只想测试myuser,则可以执行以下操作:
PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`
如果您获得1,myuser的密码将被验证为良好.
标签:linux,mysql,command-line
来源: https://codeday.me/bug/20190805/1588010.html