10

我有一个 PHP 脚本,它调用 MySQLLOAD DATA INFILE从 CSV 文件加载数据。但是,在生产服务器上,我最终遇到了以下错误:

用户拒绝访问...(使用密码:是)

作为一种快速的解决方法,我将命令更改为LOAD DATA LOCAL INFILE有效。但是,相同的命令在客户端服务器上失败并显示以下消息:

此 MySQL 版本不允许使用的命令

我认为这与服务器变量有关:如此local_infile = off所述。

请提出不涉及更改服务器设置的解决方法。请注意,安装在同一台服务器上的 phpMyAdmin 实用程序似乎接受 CSV 文件,但我不确定它是否使用LOAD DATA (LOCAL) INFILE.

4

3 回答 3

42

遇到与root相同的问题并扔了我一会儿

可能是您使用 compile 设置的服务器设置的问题

使用同一用户测试登录到控制台并尝试加载数据命令

如果您遇到相同的错误,请尝试关闭控制台并运行

mysql -u USER -p --local-infile=1 DATABASE

现在尝试再次运行加载数据命令

如果它有效,那么您将需要使用命令行选项重新启动 mysqld 或使用配置选项重新安装

参考资料(参考资料适用于 5.0,但适用于 5.5):

http://dev.mysql.com/doc/refman/5.0/en/load-data-local.html

http://dev.mysql.com/doc/refman/5.0/en/mysql-command-options.html#option_mysql_local-infile

于 2012-08-31T06:23:08.623 回答
2

我发现我需要像这样连接到数据库:

$dbh=mysql_connect($server,$dbuser,$dbpass,false,128);

传入128flags 参数是关键。

请参阅http://www.php.net/manual/en/mysql.constants.php#mysql.client-flags以了解有关标志的更多信息。

于 2013-11-18T18:02:59.953 回答
0

看看这个权限列表,可以单独添加,IE。您可以插入但不更新,或者您可以删除但不选择等...

ALL [PRIVILEGES]    Grant all privileges at specified access level except GRANT OPTION
ALTER   Enable use of ALTER TABLE
ALTER ROUTINE   Enable stored routines to be altered or dropped
CREATE  Enable database and table creation
CREATE ROUTINE  Enable stored routine creation
CREATE TEMPORARY TABLES     Enable use of CREATE TEMPORARY TABLE
CREATE USER     Enable use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES
CREATE VIEW     Enable views to be created or altered
DELETE  Enable use of DELETE
DROP    Enable databases, tables, and views to be dropped
EVENT   Enable use of events for the Event Scheduler
EXECUTE     Enable the user to execute stored routines
FILE    Enable the user to cause the server to read or write files
GRANT OPTION    Enable privileges to be granted to or removed from other accounts
INDEX   Enable indexes to be created or dropped
INSERT  Enable use of INSERT
LOCK TABLES     Enable use of LOCK TABLES on tables for which you have the SELECT privilege
PROCESS     Enable the user to see all processes with SHOW PROCESSLIST
REFERENCES  Not implemented
RELOAD  Enable use of FLUSH operations
REPLICATION CLIENT  Enable the user to ask where master or slave servers are
REPLICATION SLAVE   Enable replication slaves to read binary log events from the master
SELECT  Enable use of SELECT
SHOW DATABASES  Enable SHOW DATABASES to show all databases
SHOW VIEW   Enable use of SHOW CREATE VIEW
SHUTDOWN    Enable use of mysqladmin shutdown
SUPER   Enable use of other administrative operations such as CHANGE MASTER TO, KILL, PURGE BINARY LOGS, SET GLOBAL, and mysqladmin debug command
TRIGGER     Enable trigger operations
UPDATE  Enable use of UPDATE
USAGE   Synonym for “no privileges”

我认为你有权选择、删除、插入、更新,但不能做其他事情,

使用这个命令:

SHOW GRANTS

在我的情况下,他会告诉你你能做什么。

jcho360> show grants;
+-------------------------------------------------------+
| Grants for jbolivar@localhost                         |
+-------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'jbolivar'@'localhost' |
+-------------------------------------------------------+
1 row in set (0.00 sec)
于 2012-05-24T13:27:09.523 回答