我希望将数据加载到数据库的表(数据集)中。 我正在使用标准命令
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' @'%'
的授权不同有任何解决此问题的建议吗?
谢谢
答案 0 :(得分:3)
MySQL帐户名由用户名和主机名组成。这样可以为具有相同名称且可以从不同主机连接的用户创建帐户。
所以,不,这两个用户确实是两个不同的用户,有两组独立的权限。
此外,
仅包含用户名的帐户名称相当于'user_name'@'%'。例如,'我'相当于'我'@'%'。
连接时,服务器使用$('#billing_country_field').after('<span>for shipping to other countries, please contact us at...</span>');
表中的条目,按内部排序顺序,确定您是哪个用户。
服务器使用排序规则,首先对具有最特定主机值的行进行排序。文字主机名和IP地址是最具体的。
模式'%'表示“任何主机”,并且最不具体。
因此,当您从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权限。