Como você testa credenciais do MySQL na linha de comando em um servidor Linux?
Como você testa credenciais do MySQL na linha de comando em um servidor Linux?
Respostas:
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.