zoukankan      html  css  js  c++  java
  • Mysql 命令 load data infile 权限问题

    【1】Mysql命令load data infile 执行权限问题

    工作中,经常会遇到往线上环境mysql数据库批量导入源数据的场景。

    针对这个场景问题,mysql有一个很高效的命令:load data infile

    通过load data infile命令将data_file文件数据导入表中。

    当然,因为mysql数据库权限限制的问题,分为以下几种情况:

    (1)root用户(特指mysql的root,非Linux系统的root)

    在mysql server部署机器通过load data infile命令导入数据时,只要文件路径指定正确,一般不会有问题。

    如果导入失败,请参见随笔《Mysql 导入文件提示 --secure-file-priv option 问题

    (2)非root用户在mysql server部署机器通过load data infile命令导入数据时,报错:

    ERROR 1045 (28000): Access denied for user 'xxx'@'xxx' (using password: YES)

    这个错误一般是因为非root用户没有FILE Privilege权限,查询当前用户权限可参见随笔《Mysql 用户及权限

    两种解决方案:

    [1] 命令加local参数。用load data local infile 'filename' into table 来导入数据(强烈推荐使用)

    [2] 为当前用户开通权限。给当前用户开通FILE Privilege权限时,注意:

    FILE权限与SELECE/DELETE/UPDATE等不同,后者是可以具体指定到某个db的某个表的,而FILE则是全局的,

    即只能通过grant FILE on *.* to 'abcde'@'%'才能使FILE权限对所有db的所有tables生效。

    通过grant all on db.* to 'abcde'@'%'不能使指定的user在指定的db上具有FILE权限。

    根据最小权限原则(操作系统安全的概念),这个方法并不安全,故不推荐使用。

    (3)非root用户从client机器load data local infile至remote mysql server时,报错:

    ERROR 1148 (42000): The used command is not allowed with this MySQL version

    可能原因(from mysql reference manual):

    If LOAD DATA LOCAL is disabled, either in the server or the client, a client that attempts to issue such a statement receives the following error message:

    ERROR 1148: The used command is not allowed with this MySQL version

    可见,出于安全考虑,默认是不允许从client host远程通过load data命令导数据的

    解决办法:

    For the mysql command-line client, enable LOAD DATA LOCAL by specifying the --local-infile[=1]option, or disable it with the --local-infile=0 option

    也即,在需要从client host导人数据的场景下,当登陆mysql时,需用--local-infile[=1]显式指定参数,典型命令形式为:

    mysql --local-infile -u user -p passwd

    登陆成功后,再执行load data infile 'filename' into table即可。

    Good Good Study, Day Day Up.

    顺序 选择 循环 总结

  • 相关阅读:
    Delphi中 StrToIntDef函数的用法:
    Delphi判断文件夹(目录)是否存在,不存在就创建一个,可以一次创建多级目录
    Delphi中Format的字符串格式化使用说明
    linux下可变参数打印
    c++11 thread
    QMessageBox 使用
    Ubuntu虚拟机配置nfs
    test
    Qt 布局时组建不贴边
    QPainter 居中写字
  • 原文地址:https://www.cnblogs.com/Braveliu/p/11411272.html
Copyright © 2011-2022 走看看