SQL 错误 [1142] [42000]: SELECT command denied to user 'ambari'@'192.168.91.40' for table 'user'
时间: 2023-09-06 12:09:22 浏览: 73
这个错误提示表明当前用户 'ambari' 尝试从 IP 地址 '192.168.91.40' 访问 'user' 表,但是该用户没有该表的 SELECT 权限。这种情况通常发生在以下几种情况中:
1. 用户 'ambari' 没有被授予 SELECT 用户表的权限。
2. IP 地址 '192.168.91.40' 不在允许访问该表的 IP 地址列表中。
3. 该表不存在。
你可以通过以下方式解决这个问题:
1. 确保用户 'ambari' 被授予了 SELECT 表的权限。可以使用以下命令来授权:
```
GRANT SELECT ON user TO 'ambari'@'192.168.91.40';
```
这会授予用户 'ambari' 在 IP 地址 '192.168.91.40' 上 SELECT 'user' 表的权限。
2. 确保 IP 地址 '192.168.91.40' 在允许访问该表的 IP 地址列表中。可以使用以下命令检查:
```
SELECT Host, Db, User FROM mysql.db WHERE Db = 'database_name' AND User = 'user_name';
```
如果你没有找到该表的相关记录,则需要添加一个新的记录。例如,如果你想允许来自 IP 地址 '192.168.91.40' 的用户 'ambari' 访问 'user' 表,可以使用以下命令:
```
INSERT INTO mysql.db (Host, Db, User, Select_priv) VALUES ('192.168.91.40', 'database_name', 'ambari', 'Y');
```
这将添加一个新的记录,使用户 'ambari' 在 IP 地址 '192.168.91.40' 上可以访问 'user' 表。
3. 确保该表存在。你可以使用以下命令检查该表是否存在:
```
SHOW TABLES LIKE 'user';
```
如果该表不存在,则需要创建一个新的表。例如,如果你想创建一个名为 'user' 的新表,可以使用以下命令:
```
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(50)
);
```
这将创建一个名为 'user' 的新表,并定义三个列:'id'、'name' 和 'email'。