Аналогічне запитання існує і в StackOverflow.
Щоб узагальнити мою відповідь звідти.
Можна export MYSQL_PWD=yourverysecretpassword
.
Перевага цього методу, ніж використання файлу конфігурації, полягає в тому, що вам не потрібен окремий файл конфігурації, щоб підтримувати синхронізацію зі своїм сценарієм. У вас є лише сценарій для підтримки.
Немає недоліків у цього методу.
Пароль не видно іншим користувачам у системі (було б видно, якщо він знаходиться в командному рядку). Змінні середовища видно лише користувачеві, який виконує команду mysql та root.
Пароль також буде видимий для всіх, хто може сам прочитати сценарій, тому переконайтеся, що сам скрипт захищений. Це нічим не відрізняється від захисту файлу конфігурації. Ви все одно можете отримати джерело пароля з окремого файлу, якщо хочете, щоб сценарій був загальнодоступним ( export MYSQL_PWD=$(cat /root/mysql_password)
наприклад). Все ж простіше експортувати змінну, ніж створити файл конфігурації.
Наприклад,
$ export MYSQL_PWD=xoF3mafn5Batxasdfuo
$ mysqldump -u root mysql | head
-- MySQL dump 10.13 Distrib 5.6.23, for Linux (x86_64)
--
-- Host: localhost Database: mysql
-- ------------------------------------------------------
-- Server version 5.6.23
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
echo "$MYSQL_PASS"
перш ніж передати його наmysql
рядок. Чи має він правильний пароль?