首页 > 解决方案 > 如何通过 bash 创建新的 mysql 数据库/模式?

问题描述

我正在编写一个 bash 脚本来创建一个新的空 mysql 数据库,基于一个已经存在的数据库。我的计划是通过以下步骤:

  1. 使用用户定义的名称创建一个空白数据库
  2. 通过从现有数据引入数据结构,使用 mysql 转储填充该数据库

我可以通过 root 用户创建新数据,但需要非 root 用户才能使用该数据库。我的问题是在我尝试授予非 root 用户特权的步骤。

我得到的错误是:

ERROR 1045 (28000) at line 1: Access denied for user 'root'@'%' (using password: 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"

我希望能够使用非 root ${DB_USER} 使用新创建的数据库

标签: mysqlbash

解决方案


好吧,那算了。我找到了解决方案。那 。在“授予所有特权”中TO'是麻烦制造者。我将其更改为 .* 并且效果很好。


推荐阅读