解決策 1:
MySQL と PostgreSQL の両方で、ローカル構成ファイルでユーザーとパスワードを指定できます。 MySQL の場合は .my.cnf、PostgreSQL の場合は .pgpass です。これらのファイルは、ホーム ディレクトリ (つまり、~/.my.cnf) にある必要があります。
.my.cnf:
[mysql]
user=user
password=password
.pgpass:
host:port:database:user:password
ここではワイルドカード エントリを使用して、******* を任意のフィールドに置き換えることができます。
PS:コマンドラインでパスワードを指定しないでください! これは ps で完全に表示できます 他のユーザーに属するプロセスを表示しないようにシステムが構成されていない場合。
@thinice:これらのファイルを本当に安全に作成したい場合は、次のことを行う必要があります:
umask 077
touch .my.new.config
umask 022 # or whatever was your default
このようにして、ファイルは最初から安全なアクセス許可で作成され、盗聴者がパスワードを盗み出す可能性はありません.
いずれにせよ、PostgreSQL は 0600 より高いパーミッションを持つファイルの使用を拒否します。
解決策 2:
mysql_config_editor set --login-path=storedPasswordKey --host=localhost --user=root --password
安全なパスワードを使用してコマンドラインを実行するにはどうすればよいですか??構成エディターを使用してください!!!
mysql 5.6.6 以降では、パスワードを構成ファイルに保存してから、次のような cli コマンドを実行できます....
mysql --login-path=storedPasswordKey ....
--login-path は変数を置き換えます... ホスト、ユーザー、およびパスワード。すばらしいです!
解決策 3:
パスワードを引用符で囲まないでください。引用符を使用すると、パスワードの一部と見なされます。
解決策 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
これでうまくいきますありがとう