GNU/Linux >> Tutoriales Linux >  >> Linux

¿Conectarse a MySQL a través de la línea de comandos sin usar la contraseña de root?

Solución 1:

Tanto para MySQL como para PostgreSQL puede especificar su usuario y contraseña en el archivo de configuración local. .my.cnf para MySQL y .pgpass para PostgreSQL. Estos archivos deben estar en su directorio de inicio (es decir, ~/.my.cnf).

.mi.cnf:

[mysql]
user=user
password=password

.pgpass:

host:port:database:user:password

Puede tener una entrada comodín aquí, sustituyendo cualquier campo por *******.

PD:¡NUNCA ESPECIFIQUE UNA CONTRASEÑA EN LA LÍNEA DE COMANDOS! Esto se puede ver perfectamente con ps si su sistema no está configurado para no mostrar procesos que pertenecen a otros usuarios.

@thinice:si desea crear esos archivos realmente seguros, debe hacer:

umask 077
touch .my.new.config
umask 022 # or whatever was your default

De esta manera, el archivo se crearía con permisos seguros desde el principio y ningún intruso tendría la posibilidad de obtener su contraseña.

PostgreSQL se negará a usar el archivo con permisos superiores a 0600 de todos modos.

Solución 2:

mysql_config_editor set --login-path=storedPasswordKey --host=localhost --user=root --password

¿Cómo ejecuto una línea de comando con una contraseña segura? ¡Use el editor de configuración!

A partir de mysql 5.6.6, puede almacenar la contraseña en un archivo de configuración y luego ejecutar comandos cli como este....

mysql --login-path=storedPasswordKey ....

--login-path reemplaza las variables... host, usuario Y contraseña. ¡excelente, correcto!

Solución 3:

No ponga comillas alrededor de la contraseña porque si lo hace, las comillas se considerarán parte de la contraseña.

Solución 4:

MYSQL_USER="root"
MYSQL_PASSWORD="PASSWORD"
DBNAME="DB_NAME"

mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e "CREATE DATABASE $DBNAME;" 2> /tmp/error1

STATUS=$? 
if [ $STATUS -eq 0 ];
then 
    echo -e "Database '$DBNAME' is created"
elif (grep -i "^ERROR 1007" /tmp/error1 > /dev/null);
then
    echo -e "Database '$DBNAME' already exists"
else
    echo -e "Failed to create database '$DBNAME'"
fi

rm -r /tmp/error1 

Esto hará el truco. Gracias


Linux
  1. Cómo hacer una copia de seguridad y restaurar la base de datos MySQL usando la línea de comandos

  2. Cómo reiniciar Linux usando la línea de comandos

  3. Restablecer una contraseña raíz de MySQL

  4. Cómo cambiar la contraseña de root mysql

  5. ¿Obtener el tamaño total de mi disco duro en Linux, usando la línea de comando, sin permisos de root?

Cómo conectarse a MySQL desde la línea de comandos de Windows

Obligar a los usuarios a usar la contraseña raíz en lugar de su propia contraseña cuando usan el comando Sudo

Cómo cambiar la contraseña de sudo a través de la línea de comandos en CentOS 8

Cómo restablecer la contraseña de root de MySQL

Cómo conectarse a MySQL usando PHP

¿Cómo restablecer la contraseña de root de MySQL 8.0 en Centos 7.x?