是' rajivratn' @'%'和rajivratn @ localhost在MySQL中引用同一个用户?

时间:2015-06-26 06:36:18

标签: mysql database access-denied grant mysql-error-1045

我希望将数据加载到数据库的表(数据集)中。 我正在使用标准命令

 LOAD DATA INFILE '/home/rajivratn/single_output.tsv' IGNORE INTO TABLE dataset ...

我收到以下权限错误:

ERROR 1045 (28000): Access denied for user 'rajivratn'@'localhost' (using password: YES)

这篇文章的大部分内容都表明这个问题是由MySQL的FILE权限引起的,可以通过以下GRANT命令修复:

GRANT FILE ON *.* to 'rajivratn'@'%';

我已经检查了许可,发现了以下内容:

mysql> show grants for 'rajivratn'@'%'
    -> ;
+--------------------------------------+
| Grants for rajivratn@%               |
+--------------------------------------+
| GRANT FILE ON *.* TO 'rajivratn'@'%' |
+--------------------------------------+
1 row in set (0.00 sec)

mysql> show grants;
+------------------------------------------------------------------------------------------------------------------------------------------------+
| Grants for rajivratn@localhost                                                                                                                 |
+------------------------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'rajivratn'@'localhost' IDENTIFIED BY PASSWORD 'somepassword'                               |
| GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON `yahoo`.* TO 'rajivratn'@'localhost' |
+------------------------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

然而,我仍然收到ERROR 1045(28000):访问被拒绝用户' rajivratn' @' localhost' (使用密码:是)

此外,为什么我无法在Grants中看到rajivratn @ localhost的FILE权限,以及为什么它与“rajivratn' @'%'

的授权不同

有任何解决此问题的建议吗?

谢谢

3 个答案:

答案 0 :(得分:3)

  

MySQL帐户名由用户名和主机名组成。这样可以为具有相同名称且可以从不同主机连接的用户创建帐户。

     

https://jsfiddle.net/zbb6fqtc/

所以,不,这两个用户确实是两个不同的用户,有两组独立的权限。

此外,

  

仅包含用户名的帐户名称相当于'user_name'@'%'。例如,'我'相当于'我'@'%'。

连接时,服务器使用$('#billing_country_field').after('<span>for shipping to other countries, please contact us at...</span>'); 表中的条目,按内部排序顺序,确定您是哪个用户。

  

服务器使用排序规则,首先对具有最特定主机值的行进行排序。文字主机名和IP地址是最具体的。

     

模式'%'表示“任何主机”,并且最不具体。

     

https://dev.mysql.com/doc/refman/5.6/en/account-names.html

因此,当您从mysql.user连接时,您将与该用户匹配,否则,您将与通配符用户匹配。

您需要在localhost中删除用户,或者特别为其授予权限。

localhost

答案 1 :(得分:2)

最后,我使用.csv文件使用以下命令将数据集加载到'yahoo'数据集中:

mysqlimport -u rajivratn -p --local yahoo dataset.csv

感谢另外两个答案,因为他们还阐明了许多与mysql相关的重要概念。

答案 2 :(得分:1)

按照以下方式给予许可 -

GRANT USAGE ON *.* TO 'rajivratn'@'localhost' IDENTIFIED BY PASSWORD 'somepassword'; 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, FILE ON `yahoo`.* TO 'rajivratn'@'localhost'

注意:添加了一个FILE权限。