【问题标题】:Special chars issue while granting priviliges on mysql database授予 mysql 数据库权限时出现特殊字符问题
【发布时间】:2017-01-09 03:42:25
【问题描述】:

我在尝试通过 t 为 mysql 用户授予数据库权限时遇到了一个问题。我认为这是因为数据库名称中的特殊字符。

这个正在工作:

/usr/bin/mysql -uroot -pXz5eaCqwvsT0pAr0gsf0tg1a -e "GRANT ALL PRIVILEGES ON dev_52000_nycny.* TO 'wp_j-5-1-5_nycny'@localhost"

那个不工作:

/usr/bin/mysql -uroot -pXz5eaCqwvsT0pAr0gsf0tg1a -e "GRANT ALL PRIVILEGES ON dev_j-5-1-5_nycny.* TO 'wp_j-5-1-5_nycny'@localhost"

我尝试了几种组合,但没有运气:

/usr/bin/mysql -uroot -pXz5eaCqwvsT0pAr0gsf0tg1a -e "GRANT ALL PRIVILEGES ON 'dev_j-5-1-5_nycny'.* TO 'wp_j-5-1-5_nycny'@localhost"

/usr/bin/mysql -uroot -pXz5eaCqwvsT0pAr0gsf0tg1a -e "GRANT ALL PRIVILEGES ON dev_j\-5\-1\-5_nycny.* TO 'wp_j-5-1-5_nycny'@localhost"

/usr/bin/mysql -uroot -pXz5eaCqwvsT0pAr0gsf0tg1a -e "GRANT ALL PRIVILEGES ON 'dev_j\-5\-1\-5_nycny'.* TO 'wp_j-5-1-5_nycny'@localhost"

我该怎么办?

【问题讨论】:

    标签: mysql ubuntu terminal


    【解决方案1】:

    MySQL 使用反引号来引用包含特殊字符的数据库、表和列名。见When to use single quotes, double quotes, and backticks in MySQL

    /usr/bin/mysql -uroot -pXz5eaCqwvsT0pAr0gsf0tg1a -e 'GRANT ALL PRIVILEGES ON `dev_j-5-1-5_nycny`.* TO "wp_j-5-1-5_nycny"@localhost`
    

    确保在 -e 参数周围使用单引号,因为当它们位于双引号字符串中时,反引号对 shell 具有特殊含义。我还将用户名周围的引号更改为双引号,以适应在整个查询中使用单引号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 2020-01-01
      • 2011-06-28
      • 1970-01-01
      相关资源
      最近更新 更多