mysql - 有没有办法使用 shell 脚本将多个 SQL 文件插入到 mysql(带密码)?
问题描述
我只想问是否可以制作一个 Makefile/脚本,让我只输入一次 MySQL 密码,然后将所有 SQL 文件插入数据库。我目前在我的 Makefile 上有类似的东西。
mysql -u root -p < ./sqlfile1.sql
mysql -u root -p < ./sqlfile2.sql
...
mysql -u root -p < ./sqlfile34.sql
每次为每个 SQL 文件输入密码对我来说真的很累。
我希望我能做的是,当我运行命令时,提示只会要求我输入一次密码,然后它会自动输入每个 SQL 文件的密码。
更新
我正在努力完成这项工作,但我遇到了这个警告:
[警告] 在命令行界面上使用密码可能不安全。
...随后出现此错误:
错误 1045 (28000): 用户 'root'@'localhost' 的访问被拒绝(使用密码:是)
下面是我的代码(根据 Ron 的 [https://stackoverflow.com/users/2291328/ron] 解决方案):
#!/bin/bash
db_alpha:
read mypass
make db_build
make db_dummy
db_build:
mysql -u root -p$mypass < ./backend/database/functions.sql
make db_procedures
mysql -u root -p$mypass < ./backend/database/triggers.sql
db_dummy:
mysql -u root -p$mypass < ./backend/database/dummy/dummy_user.sql
db_procedures:
mysql -u root -p$mypass < ./backend/database/procedures/procedure_user.sql
解决方案
是的,
#!/bin/bash
echo enter your pass:
read mypass
for z in ./sqlfile1.sql ./sqlfile2.sql ./sqlfile2.sql; do
echo importing file: $z
mysql -u root -p$mypass -D databasename < "$z"
done
更新:
取决于您的 .sql 文件的结构,您可能需要-D databasename
在命令中指定。请检查更新的脚本。这个对我有用。
您可能还需要-h 127.0.0.1
在同一行中指定主机。
由于您正在运行 CLI mysql 客户端并以明文形式提供密码,因此您将看到一条警告:
[警告] 在命令行界面上使用密码可能不安全。这不是错误,因此可以忽略。
最后,您当然需要使用正确的凭据。
推荐阅读
- python - python使用adduser --home linux
- reactjs - 我可以在同一个 dotnet spa 应用程序上使用多个 useProxyToSpaDevelopmentServer 吗?
- javascript - 如何将 api 调用中的元素列表附加到无序列表?
- google-sheets - 根据其他值添加值,但 SUMIF 是完全正确的
- typescript - 开始在 tsconfig 中使用 'strict'
- python - Django:如何实时删除模型
- configuration - 检索或导出 VoIP 应用程序配置文件
- javascript - 这个 useReducer 反应代码有什么问题?
- highlight - 突出显示与其余代码不同的部分代码
- java - 我在java中正确实现了插入排序吗?