¿Prueba las credenciales de MySQL desde la línea de comandos de Linux?

16

¿Cómo se prueban las credenciales de MySQL desde la línea de comandos en un servidor Linux?

Jake Wilson
fuente

Respuestas:

5

@ Phil's Answer y @ Mr.Brownstone's Answer deberían ser suficientes para su pregunta, por lo tanto, +1 para ambos.

Para lo siguiente, supongamos que está iniciando sesión con 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é puede 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 ve 'myuser'@'localhost', puede autenticarse desde el servidor DB.

Si ve 'myuser'@'127.0.0.1'y no ve 'myuser'@'localhost', puede volver a autenticarse desde el servidor DB pero debe especificarlo --protocol=tcpdesde la línea de comandos.

Si ve 'myuser'@'%', puede hacer inicios de sesión remotos desde cualquier servidor.

Si ve 'myuse'r@'10.20.30,%', 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 que myuser inicie sesión de una manera y no de la otra.

Si simplemente desea verificar si la contraseña myuseres 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 comandos 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 lo está rooty desea 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.

RolandoMySQLDBA
fuente
13
mysql -h host -u user -p<whatever> -e"quit"

Esto le permite usar la misma cadena de conexión que usa para enviar consultas mediante programación al servidor. Puede agregar || exit 1al final para salir automáticamente en argumentos no válidos. También es posible que desee redirigir stderr a /dev/nullsi no le gusta el mensaje de error MySQL generado automáticamente.

CSTobey
fuente
6

Puede usar el siguiente comando (suponiendo que tiene configurado mysql en su RUTA):

mysql -h host -u usuario -p

Solo reemplaza host y el usuario con los valores correctos y luego se le pedirá su contraseña.

Mr.Brownstone
fuente
2
Quiero comprobar mediante programación. Como algo que devuelve verdadero o falso.
Jake Wilson
2
mysql --user=user_name --password=your_password dbname

¿Su pregunta es tan simple o hay un caso específico que necesita probar?

Philᵀᴹ
fuente