我想使用这个脚本:
-- De drop table if exists zorgt ervoor als tabellen die later in dit script
worden aangemaakt al bestaan, dat deze worden verwijderd.
drop table if exists Oligos;
drop table if exists Genen;
-- In de table Genen wordt de tabel Genen aangemaakt. Ook staat hier in welke
waardes worden geaccepteerd in elke kolom.
create table Genen
(gen_id int not null unique,
chromosoom int null,
sequentie text not null,
primary key(gen_id)
);
-- In de table Oligos wordt de tabel Oligos aangemaakt. Ook staat hier in welke
waardes worden geaccepteerd in elke kolom.
create Table Oligos
(oligo_id int auto_increment,
gen int null,
sequentie text not null,
startpositie int not null,
stoppositie int not null,
smeltpunt float not null,
valide_probe boolean null,
foreign key(gen) references Genen(gen_id),
primary key(oligo_id)
);
LOAD DATA INFILE 'test.csv'
INTO TABLE Genen FIELDS TERMINATED BY ';'
LINES TERMINATED BY '\n' (gen_id, chromosoom, sequentie);
在test.csv
内我有2条简单的行用于测试目的:
323;4;skdjksdjkk
123;4;jknfrkfn
这是我的命令:
$ mysql --local-infile=1 -u rnieuwenhuis -D Rnieuwenhuis -p < Plasmodium_falciparum.sql
,它返回的错误是:
第25行的错误1045(28000):用户访问被拒绝&#39; rnieuwenhuis&#39; @&#39;%&#39; (使用密码:是)
我无法找出导致这种情况的原因。第25行是LOAD DATA
行。访问被拒绝的mysql帮助页面留下了很多可能性。但也许你们知道最常见的原因是什么。
答案 0 :(得分:1)
看起来像普通的访问错误。您的用户没有所需的权限。因为它只在第25行而不是在开始时,登录工作,但特权是不够的。可能缺少CREATE。
请检查您的用户权限。
1)通过mysql -u rnieuwenhuis -D Rnieuwenhuis -p
登录
如果这样做,您的用户名和pq是正确的。但我们已经确定了这一点。
2)执行此查询SHOW GRANTS 'rnieuwenhuis'@'localhost';
甚至SHOW GRANTS FOR CURRENT_USER();
这应该显示您当前拥有的权限列表。
3)确保授予的权限包含脚本所需的任何内容。特别是CREATE
。
4)如果没有,请以root身份(或具有必要权限的其他用户)登录并授予用户权限。
GRANT CREATE ON *.* TO 'rnieuwenhuis'@'localhost';
这假设您的数据库与您正在使用的用户相同,并且您希望在所有数据库上授予权限,而不仅仅是一个数据库。如果您想要做一些不同的事情,请按照以下链接更改*.*
。
一些有趣的链接: