Вы можете попробовать это.
test.sh
#!/bin/bash
echo "insert database name"
read db
echo "insert username "
read varname
echo "insert password for the user "
read -s varpass
sudo mysql -u root mysql<<EOF
CREATE DATABASE $db;
CREATE USER '$varname'@'localhost' IDENTIFIED BY '$varpass';
GRANT ALL ON $db.* TO '$varname'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
\q
EOF
Обратите внимание на изменения:
read $db
был изменен на read db
- $
был удален - Имя базы данных было добавлено до того, как
<<EOF
- Выход был заменен на \ q
Что если в вашей базе данных был пароль?
Вы можете создать файл ~/.my.cnf
со следующим содержимым:
[client]
user=root
password=YourPassword123!!
Затем вы можете войти в базу данных mysql mysql
с помощью команды mysql mysql
. Используя это, вы можете изменить только строку <<EOF
на:
mysql mysql<<EOF
Все остальное может остаться прежним.