¿Cómo se prueban las credenciales de MySQL desde la línea de comandos en un servidor Linux?
¿Cómo se prueban las credenciales de MySQL desde la línea de comandos en un servidor Linux?
Respuestas:
@ 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();
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=tcp
desde 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 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 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á root
y 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.
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 1
al final para salir automáticamente en argumentos no válidos. También es posible que desee redirigir stderr a /dev/null
si no le gusta el mensaje de error MySQL generado automáticamente.
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.