Jake Wilson Asked: 2012-09-06 12:21:23 +0800 CST2012-09-06 12:21:23 +0800 CST 2012-09-06 12:21:23 +0800 CST 从 Linux 命令行测试 MySQL 凭据? 772 如何在 Linux 服务器上从命令行测试 MySQL 凭据? mysql linux 4 个回答 Voted CSTobey 2016-02-16T15:04:14+08:002016-02-16T15:04:14+08:00 mysql -h host -u user -p<whatever> -e"quit" 这允许您使用用于以编程方式向服务器发送查询的相同连接字符串。您可以添加|| exit 1到末尾以自动退出无效参数。/dev/null如果您不喜欢自动生成的 MySQL 错误消息,您可能还希望将 stderr 重定向到。 World Wide DBA 2012-09-06T12:24:51+08:002012-09-06T12:24:51+08:00 您可以使用以下命令(假设您在 PATH 中设置了 mysql): mysql -h 主机 -u 用户 -p 只需将主机和用户替换为正确的值,然后系统会提示您输入密码。 Best Answer RolandoMySQLDBA 2012-09-06T13:27:37+08:002012-09-06T13:27:37+08:00 @Phil's Answer和@Mr.Brownstone's Answer应该足以解决您的问题,因此对他们都 +1。 对于以下内容,假设您使用用户名登录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',那么您可以再次从 DB 服务器中进行身份验证,但您必须--protocol=tcp从命令行指定 。 如果您看到'myuser'@'%',那么您可以从任何服务器进行远程登录。 如果您看到'myuse'r@'10.20.30,%',那么您只能从 10.20.30.% 网络块进行远程登录。 一旦你看到 'mysql.user' 对你的用户有什么,你可能想要允许或限制 myuser 以一种方式而不是另一种方式登录。 如果您只是想检查密码是否myuser为whateverpassword,您可以执行以下操作: 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 的密码被验证为正确。 Philᵀᴹ 2012-09-06T12:25:26+08:002012-09-06T12:25:26+08:00 mysql --user=user_name --password=your_password dbname 您的问题是那么简单,还是您需要测试一个特定的案例?
这允许您使用用于以编程方式向服务器发送查询的相同连接字符串。您可以添加
|| exit 1
到末尾以自动退出无效参数。/dev/null
如果您不喜欢自动生成的 MySQL 错误消息,您可能还希望将 stderr 重定向到。您可以使用以下命令(假设您在 PATH 中设置了 mysql):
只需将主机和用户替换为正确的值,然后系统会提示您输入密码。
@Phil's Answer和@Mr.Brownstone's Answer应该足以解决您的问题,因此对他们都 +1。
对于以下内容,假设您使用用户名登录
myuser
连接到 mysql 后,您应该运行以下查询:
有时,它们是不同的。这可以让您深入了解为什么允许您登录 mysql。
这是您需要运行的另一个查询:
这将向您展示允许您以
myuser
.如果您看到
'myuser'@'localhost'
,那么您可以从数据库服务器中进行身份验证。如果您看到
'myuser'@'127.0.0.1'
而没有看到'myuser'@'localhost'
,那么您可以再次从 DB 服务器中进行身份验证,但您必须--protocol=tcp
从命令行指定 。如果您看到
'myuser'@'%'
,那么您可以从任何服务器进行远程登录。如果您看到
'myuse'r@'10.20.30,%'
,那么您只能从 10.20.30.% 网络块进行远程登录。一旦你看到 'mysql.user' 对你的用户有什么,你可能想要允许或限制 myuser 以一种方式而不是另一种方式登录。
如果您只是想检查密码是否
myuser
为whateverpassword
,您可以执行以下操作:您可以从命令行检查如下:
如果您不是
root
并且只想测试 myuser,您可以这样做:如果您得到 1,则 myuser 的密码被验证为正确。
您的问题是那么简单,还是您需要测试一个特定的案例?