如何从命令行通过mysql运行单个查询?

Mat*_*hew 135 mysql sql unix command-line

我希望能够在脚本化任务中的远程服务器上运行单个查询.

例如,直觉上,我会想象它会像:

mysql -uroot -p -hslavedb.mydomain.com mydb_production "select * from users;"
Run Code Online (Sandbox Code Playgroud)

RC.*_*RC. 220

mysql -u <user> -p -e "select * from schema.table"
Run Code Online (Sandbox Code Playgroud)

  • 另外,如果要剥离标题和表格式,则可以使用mysql -u &lt;user&gt; -p -B --disable-column-names -e'select * from schema.table'` (3认同)
  • C:\ Program Files(x86)\ MySQL\MySQL Server 5.7\bin> mysql.exe -u root -p -e"my query"----> ERROR 1045(28000):用户'root'访问被拒绝@ 'localhost'(使用密码:YES) (2认同)
  • 这应该是谷歌搜索的第一个结果(从命令行搜索“mysql exec sql”),而不是庞大的 mysql 站点! (2认同)
  • @tinybyte 假设 Linux:Insinde 双引号将星号 `*` 扩展到当前目录中的所有文件,而这种扩展不会发生在单引号中,这就是原因。双引号将适用于没有 `*` 的查询。 (2认同)
  • @Dr.jacky 我相信你真的不再需要了,但是对于未来,如果你的 root 用户没有密码,不要将 -p 选项传递为空白,只是根本不要传递它,即`mysql。 exe -u root -e “我的查询”` (2认同)

Joh*_*ica 22

mysql -uroot -p -hslavedb.mydomain.com mydb_production -e "select * from users;"
Run Code Online (Sandbox Code Playgroud)

从使用情况打印输出:

-e,--execute=name
执行命令并退出.(禁用--force和历史文件)


ʞɔı*_*ɔıu 10

这是你如何用一个很酷的shell技巧来做到这一点:

mysql -uroot -p -hslavedb.mydomain.com mydb_production <<< 'select * from users'
Run Code Online (Sandbox Code Playgroud)

'<<<'指示shell将其后的任何内容作为stdin,类似于echo的管道.

使用-t标志启用表格式输出


dna*_*irl 9

如果它是您经常运行的查询,则可以将其存储在文件中.然后,只要你想运行它:

mysql < thefile
Run Code Online (Sandbox Code Playgroud)

(当然有所有登录和数据库标志)


Oct*_*Oct 5

echo "select * from users;" | mysql -uroot -p -hslavedb.mydomain.com mydb_production
Run Code Online (Sandbox Code Playgroud)