【问题标题】:Running MySql command from terminal not working从终端运行 MySql 命令不起作用
【发布时间】:2023-03-24 03:54:01
【问题描述】:

所以我想将我的 netstat 输出通过管道传输到 mysql 数据库中

计划是让它成为一个连续的 crontab 事件。这样我就可以存储这些数据并轻松地在其他地方使用它。

虽然我需要弄清楚如何从终端运行 SQL 命令,但我在弄清楚这部分之前就已经想到了。

看起来很简单

sudo mysql -u username -pMYPassword -e "SQL COMMAND"

但这不起作用...

当我运行它时,它会打印 MYSQL 帮助

当我运行它时

sudo mysql -u username -p -e "SQL COMMAND"

一切正常,只是提示我输入密码

现在我不知道它是否有区别,但我的数据库密码确实有感叹号。它的长度也超过 15 个字符

这两个可能是个问题吗?

【问题讨论】:

  • 您是尝试在 shell 中还是通过 crontab 执行第一个(不工作)命令?另外,我看不到您在哪里指定要操作的数据库(当然,如果您的 SQL 需要这样做)
  • 我尝试从终端执行此操作,我运行的命令是 SHOW DATABASES
  • 您的语法(使用SHOW DATABASES)是正确的(并且运行良好)。所以我有两个猜测。首先 - 您的密码包含特殊符号,需要转义才能在 crontab 中使用。其次 - 你没有保存你的输出,因此,无法意识到一切顺利

标签: mysql linux terminal


【解决方案1】:
mysql -u user -p -e 'SQL Query' database

在哪里,

-u : Specify mysql database user name
-p : Prompt for password
-e : Execute sql query
database : Specify database name

所以选项-p是一个PROMPT,密码不需要链接,但要和它分开:

sudo mysql -u username -p'PassWord' -e 'SELECT COUNT(*) FROM my_table'

编辑:如果您的真实密码包含特殊字符,您需要对其进行转义。

【讨论】:

  • 所以这个答案确实有效,但是 -p 标志和密码之间没有空格。
  • “分隔”是指密码不与选项-p连接,引号是这种分隔的标志,尽管这两个选项都可以工作,在-p之后有或没有空格,但引号是强制性的。
  • 我用空格试了一下,它提示我输入密码,好像我根本没有输入它一样
【解决方案2】:

也许可以试试:sudo mysql -u username -p'MYPassword' -e "SQL COMMAND"

或者:sudo mysql -u username --password=MyPassword -e "SQL COMMAND"

【讨论】:

    猜你喜欢
    • 2012-04-30
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2019-12-22
    • 2016-02-13
    相关资源
    最近更新 更多