【问题标题】:MySQL access denied from bash when executing MySQL commands执行 MySQL 命令时 bash 拒绝 MySQL 访问
【发布时间】:2014-03-07 22:14:16
【问题描述】:

当我从这样的 bash 脚本登录到 mysql 时:

mysql --user="$USERNAME" --password="$PASSWORD" --database="$DATABASE" << EOF
# No command here
EOF;

我的用户已登录到数据库并且工作正常。但是当我的 bash 脚本做一些像

这样简单的事情时
mysql --user="$USERNAME" --password="$PASSWORD" --database="$DATABASE" << EOF
show tables;
show columns from some_table;
...
# Now there are commands
EOF;

Mysql 给了我这个错误:用户'user'@'localhost'拒绝访问数据库'database' 什么会导致这种情况?

澄清一下,我完全可以从命令行调用mysql -uUser -pPass database,登录,然后调用show tables;。仅当从 bash 脚本运行时,并且当该 bash 脚本包含 mysql 命令时,我的访问才会被拒绝。

此外,是否有一个简单易用的 python/c++ 库,它可以处理 mysql 交互,并且无需注册即可获得该库?

【问题讨论】:

    标签: mysql bash shell unix


    【解决方案1】:

    我总是使用-e 标志在脚本中传递命令:

      mysql --user="$USERNAME" --password="$PASSWORD" --database="$DATABASE"  -e "show tables;"
    

    【讨论】:

    • 我实际上调用了多个命令,抱歉没有指定,因此我使用
    • @kjh 您可以指定任意数量的命令,用分号分隔
    • 嗯,好的。我会继续尝试一下。它会忽略换行符吗?
    • 我认为只要起始引号与 -e 位于同一行
    • 它应该仍然像问题所写的那样工作。如果没有 -e 选项,mysql 将从标准输入读取,并且我有许多脚本可以通过管道传输到 mysql
    猜你喜欢
    • 1970-01-01
    • 2016-01-27
    • 2015-12-18
    • 2012-07-30
    • 2018-04-28
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    相关资源
    最近更新 更多