我正在编写一个 bash 脚本来执行一些数据库操作。 MySQL 新手。我在 Mac 上,通过自制软件安装了 MySQL。
我现在使用用户名“root”并且没有设置密码。我在下面包含了 pw 语法,只是为了帮助其他可能有 pw 的人。
我的目标是让 mysql 命令在我的 bash 脚本中尽可能“干净”
不是什么大不了的事,但如果可能的话我想这样做。
例子
# If I can do it without logging in (*ideal)
mysql CREATE DATABASE dbname;
# Or by logging in with - mysql -u root -pPassword
CREATE DATABASE dbname;
# Instead of
mysql -u root -pPassword -e"CREATE DATABASE dbname";
试图简化它。我有一些事情要做,所以如果可能的话,我宁愿让我的代码更干净。我尝试使用 bash 脚本登录,但一旦登录到 MySQL,该脚本就停止了,并且没有运行任何命令。
我正在考虑(但不太喜欢)的另一个选择是将用户名和密码字符串保存在一个 var 中,并像这样为每个命令调用它
# Set the login string variable
login_details="-u root -p password -e"
# example command
mysql $login_details"CREATE DATABASE dbname";
有什么想法吗?
最佳答案
编写一个新的 bash 脚本文件,并在将所有命令放入其中后运行该文件。不要忘记在您的 bash 脚本中提供正确的用户名和密码。
对于 bash 脚本:
#!/bin/bash
mysql -u root -pSeCrEt << EOF
use mysql;
show tables;
EOF
如果你想运行单个 mysql 命令。
mysql -u [user] -p[pass] -e "[mysql commands]"
示例:
mysql -h 192.168.1.10 -u root -pSeCrEt -e "show databases"
执行多个mysql命令:
mysql -u $user -p$passsword -Bse "command1;command2;....;commandn"
注意:-B表示批量,打印结果使用tab作为列分隔符,每行另起一行。使用这个选项,mysql 不使用历史文件。批处理模式导致非表格输出格式和特殊字符转义。 -s 是静默模式。产生更少的输出。 -e 是执行语句并退出
关于mysql - 在 bash 脚本中运行 mysql 命令,无需登录或在每个命令中添加 -u root,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39951808/