我在尝试通过 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 使用反引号来引用包含特殊字符的数据库、表和列名称。请参阅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 具有特殊含义。我还将用户名周围的引号更改为双引号,以适应在整个查询周围使用单引号。
关于mysql - 授予 mysql 数据库权限时出现特殊字符问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39268419/