Search code examples
mysqlpasswordsclientconfigstdin

How to pass the password securely to MySQL Client with automation


I'm seeking for solution to pass the password securely to MySQL client on *nix platforms while using automated script solution (i.e Bash script).

So far, I had to realize that MySQL ignores password input from stdin at all (still asks for password on terminal, crashes on automation).

The worst, solution using ~/.mylogin.cnf also doesn't work for me, it seems MySQL somehow ignores it at all.

I prefer to not to use the command line -p argument for password to prevent described "all-around" security issues.

--defaults-file and --defaults-extra-file handn't give the solution as well, seems like the password is prompted by client at "all-cost".

Therefore, I'm just running out of solutions for that primitive (at first sight) task!

Any help will be highly appreciated!


Solution

  • I'll try to be short in my findings:

    First, the solution using mysql --defaults-extra-file="path/to/file" is actually worked for me among with --default-file option until it is passed as the first argument (as well noticed by Bill Karwin here).

    Second, usage of ~/mylogin.cnf also workes fine until the file access restricted for all users except the current account the MySQL client is running under + file is restricted from execution even by current user (chmod u-x) as well, possibly treated by MySQL as a threat due to Linux GUI x permission umbrella on many systems (execute permission is enabled for user, group and others by setting one V in GUI for the file). Still this reason is just a suggestion.