Como você testa credenciais do MySQL na linha de comando em um servidor Linux?
fonte
Como você testa credenciais do MySQL na linha de comando em um servidor Linux?
As respostas @ Phil e @ Mr.Brownstone devem ser suficientes para a sua pergunta, portanto, +1 para as duas.
Para o seguinte, vamos assumir que você está efetuando login com nome de usuário myuser
Depois de se conectar ao mysql, você deve executar a seguinte consulta:
SELECT USER(),CURRENT_USER();
Às vezes, eles são diferentes. Isso pode lhe dar informações sobre por que você tem permissão para fazer login no mysql.
Aqui está outra consulta que você precisa executar:
SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';
Isso mostrará as maneiras pelas quais você pode fazer login como myuser
.
Se você vir 'myuser'@'localhost'
, poderá se autenticar de dentro do DB Server.
Se você vir 'myuser'@'127.0.0.1'
e não vir 'myuser'@'localhost'
, poderá se autenticar novamente no DB Server, mas deverá especificar a --protocol=tcp
partir da linha de comando.
Se você vir 'myuser'@'%'
, poderá fazer logins remotos a partir de qualquer servidor.
Se você 'myuse'r@'10.20.30,%'
vir, poderá fazer logins remotos apenas do netblock de 10.20.30.%.
Depois de ver o que o 'mysql.user' possui para o usuário, você pode permitir ou restringir o myuser do logggin de uma maneira e não da outra.
Se você simplesmente deseja verificar se a senha myuser
é whateverpassword
, faça o seguinte:
SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');
Você pode verificar na linha de comando da seguinte maneira:
PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`
Se você não é root
e deseja testar apenas o myuser, pode fazer o seguinte:
PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`
Se você obtiver 1, a senha do myuser será verificada como boa.
mysql -h host -u user -p<whatever> -e"quit"
Isso permite que você use a mesma cadeia de conexão usada para enviar consultas programaticamente ao servidor. Você pode adicionar || exit 1
ao final a saída automática de argumentos inválidos. Você também pode redirecionar o stderr para /dev/null
se não gostar da mensagem de erro MySQL gerada automaticamente.
Você pode usar o seguinte comando (assumindo que você tenha o mysql configurado no seu PATH):
mysql -h host -u usuário -p
Apenas substitua host e usuário pelos valores corretos e, em seguida, sua senha será solicitada.
Sua pergunta é simples ou existe um caso específico que você precisa testar?
fonte