我有一个在 xxxx 上运行的远程 MySQL 服务器并且有一个名为 abc 的数据库。
我可以做到以下几点
mysql -h x.x.x.x -uroot
use abc
但是当我尝试
mysql -h x.x.x.x -uroot --database=abc
我明白了
ERROR 1044 (42000): Access denied for user 'root'@'%' to database 'abc'
这是为什么?我该如何解决?
编辑:
我现在通过执行以下操作解决了这个问题:
ssh in the box
run mysql -uroot
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
但我还是不明白为什么。
mysql> 选择用户(),当前用户();
+-----------------------------+----------------+
| USER() | CURRENT_USER() |
+-----------------------------+----------------+
| [email protected] | root@% |
+-----------------------------+----------------+
mysql> SHOW GRANTS FOR root@'%';
+------------------------------------------------------------------+
| Grants for root@% |
+------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'root'@'%' |
| GRANT ALL PRIVILEGES ON `mydb`.* TO 'root'@'%' WITH GRANT OPTION |
+------------------------------------------------------------------+
mysql> SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) from mysql.user WHERE user='root';
ERROR 1142 (42000): SELECT command denied to user 'root'@'Maxs-MacBook-Air.local' for table 'user'
最大限度