mysql -h host -u user -p<whatever> -e"quit"
Esto le permite usar la misma cadena de conexión que usa para enviar consultas al servidor mediante programación. Puedes agregar || exit 1
hasta el final para salir automáticamente en argumentos inválidos. También puede redirigir stderr a /dev/null
si no le gusta el mensaje de error de MySQL generado automáticamente.
Puede usar el siguiente comando (asumiendo que tiene mysql configurado en su RUTA):
mysql -h servidor -u usuario -p
Simplemente reemplace host y usuario con los valores correctos y luego se le pedirá su contraseña.
@Phil's Answer y @Mr.Brownstone's Answer deberían ser suficientes para su pregunta, así que +1 para ambos.
Para lo siguiente, supongamos que inicia sesión con el nombre de usuario myuser
Una vez que se haya conectado a mysql, debe ejecutar la siguiente consulta:
SELECT USER(),CURRENT_USER();
- USER() informa cómo intentó autenticarse en MySQL
- CURRENT_USER() informa cómo se le permitió autenticarse en MySQL
A veces, son diferentes. Esto puede darle una idea de por qué se le permite iniciar sesión en mysql.
Aquí hay otra consulta que debe ejecutar:
SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';
Esto le mostrará las formas en que puede iniciar sesión como myuser
.
Si ves 'myuser'@'localhost'
, luego puede autenticarse desde dentro del servidor DB.
Si ves 'myuser'@'127.0.0.1'
y no veo 'myuser'@'localhost'
, luego puede autenticarse nuevamente desde el servidor DB, pero debe especificar el --protocol=tcp
desde la línea de comando.
Si ves 'myuser'@'%'
, luego puede hacer inicios de sesión remotos desde cualquier servidor.
Si ves 'myuse'[email protected]'10.20.30,%'
, entonces puede hacer inicios de sesión remotos solo desde 10.20.30.% netblock.
Una vez que vea lo que 'mysql.user' tiene para su usuario, es posible que desee permitir o restringir el inicio de sesión de myuser de una manera y no de la otra.
Si simplemente desea verificar si la contraseña para myuser
es whateverpassword
, puede hacer lo siguiente:
SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');
Puede verificar desde la línea de comando de la siguiente manera:
PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`
Si no eres root
y quiere probar myuser solamente, puede hacer esto:
PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`
Si obtiene 1, la contraseña de myuser se verifica como buena.