簡體   English   中英

如何通過 bash 創建新的 mysql 數據庫/模式?

[英]How do I create a new mysql database/schema through bash?

我正在編寫一個 bash 腳本來創建一個新的空 mysql 數據庫,基於一個已經存在的數據庫。 我的計划是通過以下步驟:

  1. 使用用戶定義的名稱創建一個空白數據庫
  2. 通過從現有數據引入數據結構,使用 mysql dump 填充該數據庫

我可以通過 root 用戶創建新數據,但需要非 root 用戶才能使用該數據庫。 我的問題是在我嘗試向非 root 用戶授予特權的步驟中。

我得到的錯誤是:

第 1 行的 ERROR 1045 (28000):用戶 'root'@'%' 訪問被拒絕(使用密碼:YES)

這是我的 bash 代碼段的樣子:

# drop database, if previous one exists
mysql -h ${DB_HOST} -u ${DB_USER_ROOT} -p${DB_PASSWORD_ROOT} -e "drop database if exists ${target_db}"
echo "dropped the DB"

# create a new database
mysql -h ${DB_HOST} -u ${DB_USER_ROOT} -p${DB_PASSWORD_ROOT} -e "create database if not exists ${target_db}"
echo "created new DB"

sudo mysql -h ${DB_HOST} -u ${DB_USER_ROOT} -p${DB_PASSWORD_ROOT} -e "GRANT ALL PRIVILEGES ON *.* TO '${DB_USER}'@'${DB_HOST}' with grant option;"
echo "granted permissions"


mysql -h ${DB_HOST} -u ${DB_USER_ROOT} -p${DB_PASSWORD_ROOT} -e "FLUSH PRIVILEGES;"
echo "flushed permissions"

我希望能夠使用非根 ${DB_USER} 使用新創建的數據庫

好吧,那算了。 我找到了解決方案。 那 。 在“授予所有特權”中 TO'是麻煩制造者。 我將其更改為 .* 並且效果很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM