在mysql数据库上授予特权时发出特殊字符

时间:2016-09-01 09:58:47

标签: mysql ubuntu terminal

当我尝试通过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"

我该怎么办?

1 个答案:

答案 0 :(得分: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具有特殊含义。我还将用户名周围的引号更改为双引号,以便在整个查询周围使用单引号。