mysql - 如何通过 bash 创建新的 mysql 数据库/模式?
问题描述
我正在编写一个 bash 脚本来创建一个新的空 mysql 数据库,基于一个已经存在的数据库。我的计划是通过以下步骤:
- 使用用户定义的名称创建一个空白数据库
- 通过从现有数据引入数据结构,使用 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} 使用新创建的数据库
解决方案
好吧,那算了。我找到了解决方案。那 。在“授予所有特权”中。TO'是麻烦制造者。我将其更改为 .* 并且效果很好。
推荐阅读
- linux - Systemd - 如何在重新加载服务时触发另一个单元?
- javascript - 为什么这个 try catch 语句不起作用?
- ajax - 如何在asp.netcore中制作ajax功能
- android - 如何将一个对象转换为另一种对象类型?列出清单?
- mysql - 查找 SQL 表之间的差异
- python - 如果未导入第二个脚本,如何将两个 python 脚本转换为一个可执行文件
- android - android.database.CursorWindowAllocationException: 512000 kb 的光标窗口分配失败:: 某些 android 设备中的问题
- flutter - Flutter dio cookie manager cookie停止工作
- javascript - 如何使用 Chrome 扩展中的 java 脚本以编程方式从 UL 中选择 LI?
- ios - 在后台运行应用程序并播放一些音频和加速度计