我正在尝试通过SSH(我有一个付费帐户)将数据上传到我的MySQL数据库托管的PythonAnywhere服务器上。我在PythonAnywhere界面中有三个数据库(alter$default
,alter$ip_data
和alter$visitor_data
)。
使用在线指令(here)我可以使用MySQL Workbench通过SSH成功连接到服务器,并在模式窗口(Click here to view image of schemas list)中查看三个数据库。
我可以成功地将表添加到我选择的数据库中,但是当我尝试添加数据时,我得到了Error Code: 1045. Access denied for user 'alter'@'%' (using password: YES)
。
我试过排除故障:
对于SELECT user();
,它返回[email protected]
对于SELECT current_user();
,它返回alter@%
对于SHOW GRANTS;
,它返回:
GRANT USAGE ON *.* TO 'alter'@'%' IDENTIFIED BY PASSWORD <secret> WITH MAX_USER_CONNECTIONS 6
GRANT ALL PRIVILEGES ON 'alter$default' .* TO 'alter'@'%'
GRANT ALL PRIVILEGES ON 'alter$visitor_data' .* TO 'alter'@'%'
GRANT ALL PRIVILEGES ON 'alter$ip_data' .* TO 'alter'@'%'
看来我已经获得了必要的权限并且正确连接到MySQL服务器 - 那么为什么不让我写入数据库呢? .csv文件在错误的位置?我不能使用'root'用户,因为这肯定是PythonAnywhere管理员帐户?
额外的细节:写入数据库的SQL查询 - 返回“拒绝访问” - 是:
LOAD DATA INFILE 'VALUES.CSV'
INTO TABLE ip_data_table
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 0 LINES;
这是导致许可被拒绝的infile。您需要使用--local-infile = 1标志启动mysql客户端。