Shell-Script

在一行中創建一個同名的使用者和數據庫

  • October 28, 2021

這就是我直接從 Bash 創建 MySQL 授權的所有特權數據庫使用者和具有相同名稱的相應數據庫實例的方式:

echo "CREATE USER "${domain}"@"localhost" IDENTIFIED BY \"${dbup}\";" | mysql -u root -p"${dbrp}"
echo "CREATE DATABASE ${domain};" | mysql -u root -p"${dbrp}"
echo "GRANT ALL PRIVILEGES ON ${domain}.* TO ${domain}@localhost;" | mysql -u root -p"${dbrp}"

前兩個命令能否以某種方式合併為一個命令?

使用“此處文件”又名heredoc。例如:

cat <<EOF | mysql -u root -p"${dbrp}"
CREATE USER '${domain}'@localhost IDENTIFIED BY '${dbup}';
CREATE DATABASE '${domain}';
GRANT ALL PRIVILEGES ON ${domain}.* TO '${domain}'@localhost;
EOF

不幸的是,mysql仍然不支持 CREATE USER 或 CREATE DATABASE 或 GRANT 等的回滾(它對 DDL 操作進行隱式送出),否則我會說你應該將所有這些命令包裝在一個事務中(這樣如果一個失敗,他們一切都失敗了,一切都恢復到原來的樣子)。

引用自:https://unix.stackexchange.com/questions/417559