【问题标题】:Accessing MySQL from Ubuntu Bash从 Ubuntu Bash 访问 MySQL
【发布时间】:2013-10-21 01:41:56
【问题描述】:

Ubuntu bash mysql 脚本是这样的

mysql -h localhost -u $MYSQLLOGIN -p$MYSQLROOTPASS  -t -e ' 
CREATE USER $USERNAME@'localhost' IDENTIFIED BY $MYSQLPASS;
create database $MYSQLDB;
grant usage on *.* to $USERNAME@localhost identified by $MYSQLPASS;
grant all privileges on $MYSQLDB.* to $USERNAME@localhost';

收到错误信息

 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '$MYSQLPASS' at line 1

事实上 $MYSQLPASS 是可变字符串内容。当我测试时,它不是空的。我做错了什么?

【问题讨论】:

    标签: mysql bash ubuntu heredoc


    【解决方案1】:

    在 Bash 脚本中,当字符串被 ' 包围时,变量不会被它们的值替换。尝试改用"

    mysql -h localhost -u $MYSQLLOGIN -p$MYSQLROOTPASS  -t -e "
    CREATE USER '$USERNAME'@'localhost' IDENTIFIED BY '$MYSQLPASS';
    create database $MYSQLDB;
    grant usage on *.* to '$USERNAME'@'localhost' identified by '$MYSQLPASS';
    grant all privileges on $MYSQLDB.* to '$USERNAME'@'localhost';"
    

    【讨论】:

    • 我的错,您需要用单引号将密码括起来。
    • 您确定该用户不存在?
    【解决方案2】:

    您需要将变量放在引号中以获得有效的 sql,并将您的字符串插入引号 (") 以替换变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 2022-01-21
      • 2016-10-14
      • 2014-03-26
      相关资源
      最近更新 更多