Goo*_*bot 10 mysql linux my.cnf configuration mysql-5.5
LOAD DATA LOCAL INFILE默认情况下不启用。通常,它应该通过放置local-infile=1在my.cnf. 但它不适用于所有安装。根据我的经验,它适用于 Debian 7,但不适用于 Debian 7 minimum,尽管这两个安装都来自同一个预编译的 deb 包。两者都在 OpenVZ VPS 上。
如何调试为什么local-infile=1对安装不起作用,以及如何安全激活LOAD DATA LOCAL INFILE?
Rol*_*DBA 25
如果 MySQL Debian-7 minimum 无法使用local_infile,请查看用于编译的所有 make 文件,看看它是否默认禁用或是否local_infile为 Debian-7 启用。
在花这种时间之前,请运行以下命令:
SHOW GLOBAL VARIABLES LIKE 'local_infile';
SET GLOBAL local_infile = 'ON';
SHOW GLOBAL VARIABLES LIKE 'local_infile';
Run Code Online (Sandbox Code Playgroud)
它应该回应以下内容:
mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | OFF |
+---------------+-------+
1 row in set (0.00 sec)
mysql> SET GLOBAL local_infile = 'ON';
Query OK, 0 rows affected (0.06 sec)
mysql> SHOW GLOBAL VARIABLES LIKE 'local_infile';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| local_infile | ON |
+---------------+-------+
1 row in set (0.00 sec)
mysql>
Run Code Online (Sandbox Code Playgroud)
如果它仍然显示'OFF',则深入查看编译器设置以启用它。
如果它设置为'ON',你就可以了。
请注意我没有说
SET GLOBAL local_infile = 1;
Run Code Online (Sandbox Code Playgroud)
我说用
SET GLOBAL local_infile = 'ON';
Run Code Online (Sandbox Code Playgroud)
如果设置这个 my.cnf
[mysqld]
local_infile=ON
Run Code Online (Sandbox Code Playgroud)
并且重新启动 mysql 也不起作用,您必须使用以下内容启动 mysql:
echo "SET GLOBAL local_infile = 'ON';" > /var/lib/mysql/init_file.sql
chown mysql:mysql /var/lib/mysql/init_file.sql
service mysql stop
service mysql start --init-file=/var/lib/mysql/init_file.sql
rm -f /var/lib/mysql/init_file.sql
Run Code Online (Sandbox Code Playgroud)
或者也许将其添加到 my.cnf
[mysqld]
init-file=/var/lib/mysql/init_file.sql
Run Code Online (Sandbox Code Playgroud)
然后重启mysql。
试一试 !!!