В MySQL командной строки: создать пользователя MySQL и БД


Пожалуйста, просмотрите мой код Bash для создания подлинности всех привилегированного пользователя MySQL плюс БД с таким же именем, через MySQL с командной строки:

read -sp "DB user password:" dbrootp_1       && echo
read -sp "DB user password again:" dbrootp_2 && echo
read -sp "DB user password:" dbuserp_1       && echo
read -sp "DB user password again:" dbuserp_2 && echo

if [ "$dbrootp_1" != "$dbrootp_2" ]; then echo "Values unmatched" && exit 1 fi
if [ "$dbuserp_1" != "$dbuserp_2" ]; then echo "Values unmatched" && exit 1 fi

cat <<-DBSTACK | mysql -u root -p"$dbrootp"
    CREATE USER "$domain"@"localhost" IDENTIFIED BY "$dbuserp";
    CREATE DATABASE "$domain";
    GRANT ALL PRIVILEGES ON "$domain".* TO "$domain"@"localhost";
DBSTACK


103
0
задан 14 февраля 2018 в 09:02 Источник Поделиться
Комментарии
1 ответ

Просто выполнить код, я получаю 4 разных входов такой:

DB user password:
DB user password again:
DB user password:
DB user password again:

который заставляет меня думать, что некоторые вещи пошли в первый раз неправильно, и я введите тот же пароль еще раз. Вы не делая его очевидным для пользователя, чтобы ввести пароль root.

echo "Enter root user credentials"
read -sp "root user password:" dbrootp_1 && echo
read -sp "root user password again:" dbrootp_2 && echo
echo "Enter new user credentials"
read -sp "new user password:" dbuserp_1 && echo
read -sp "new user password again:" dbuserp_2 && echo

делает его немного лучше.

if [ "$dbrootp_1" != "$dbrootp_2" ]; then echo "Values unmatched" && exit 1 fi
if [ "$dbuserp_1" != "$dbuserp_2" ]; then echo "Values unmatched" && exit 1 fi

Вы, возможно, пожелает выразить, какой именно пароль был несоответствие. Это хоть и более дебаты УБ. Вы не могли бы хотеть сделать это, как он может вызвать некоторые уязвимости безопасности! Однако, посмотрите на

function error_quit() {
local EXITCODE=$1
local MESSAGE="$2"
>&2 echo $MESSAGE
exit $EXITCODE
}

[[ "$dbrootp_1" != "$dbrootp_2" ]] && { error_quit 1 "Values unmatched" }
[[ "$dbuserp_1" != "$dbuserp_2" ]] && { error_quit 1 "Values unmatched" }

Расщепления функция дает вам дополнительное преимущество, так что в будущем вы можете расширить скрипт, и использовать те же минимальные настройки выхода, а не копировать его везде.

В >&2 руководит ошибки stderr поток.

3
ответ дан 14 февраля 2018 в 12:02 Источник Поделиться