使用 S3ToMySqlOperator Apache Airflow 运算符时出现错误 'LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.'
Error 'LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.' when using the S3ToMySqlOperator Apache Airflow operator
我正在尝试使用 Apache Airflow S3ToMySqlOperator 运算符 (documentation) 将某个 S3 文件的内容插入到 AWS RDS SQL 数据库中。我为此使用的代码如下所示:
s3_most_recent_file_to_sql = S3ToMySqlOperator(
s3_source_key='s3://housing-project-airflow/house-links/filtered-links-most-recent/filtered_most_recent.csv',
mysql_table='housing_project_db.city_info',
mysql_duplicate_key_handling='REPLACE',
task_id='s3_most_recent_file_to_sql',
aws_conn_id='aws_s3_connection',
mysql_conn_id='sql_conn_id',
dag=funda_scraper_dag)
'mysql_conn_id' 与 AWS RDS 管理员帐户的连接中的 'login'。现在,当 运行 在 DAG 中使用它时,我得到以下错误代码:
MySQLdb._exceptions.OperationalError: (2068, 'LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.')
现在我的猜测是管理员帐户没有权限将任何文件加载到给定的 database/table。当我检查 DBeaver 中的管理员用户权限时,这一点得到了确认;未选择 'file' 权限。
所以现在我正在尝试为管理员帐户添加此 FILE 权限,但我无法完成。
我尝试的是连接到 RDS SQL 服务器:mysql -h housing-project-db.ckvznkgqispo.eu-west-2.rds.amazonaws.com -P 3306 -u admin -p,之后我运行命令:
GRANT FILE ON mysql.* TO 'admin'@'housing-project-db.ckvznkgqispo.eu-west-2.rds.amazonaws.com' IDENTIFIED BY 'mysecretpassword';,之后我得到
您的 SQL 语法有误;查看与您的 MySQL 服务器版本相对应的手册,了解在第 1 行
的 'IDENTIFIED BY 'mysecretpassword’' 附近使用的正确语法
当我搜索遇到此问题的其他人时,他们提供了这个作为解决方案,所以我根本不明白为什么我会收到语法错误...我正在使用 MySQL 服务器版本 8.0.
对你来说有点晚了,但其他人可能会尝试启用 allow_local_infile
。请查看 Airflow 文档 here。基本上,您将 allow_local_infile
参数添加到 MySQL Airflow 连接详细信息中的 Extras 部分。
我正在尝试使用 Apache Airflow S3ToMySqlOperator 运算符 (documentation) 将某个 S3 文件的内容插入到 AWS RDS SQL 数据库中。我为此使用的代码如下所示:
s3_most_recent_file_to_sql = S3ToMySqlOperator(
s3_source_key='s3://housing-project-airflow/house-links/filtered-links-most-recent/filtered_most_recent.csv',
mysql_table='housing_project_db.city_info',
mysql_duplicate_key_handling='REPLACE',
task_id='s3_most_recent_file_to_sql',
aws_conn_id='aws_s3_connection',
mysql_conn_id='sql_conn_id',
dag=funda_scraper_dag)
'mysql_conn_id' 与 AWS RDS 管理员帐户的连接中的 'login'。现在,当 运行 在 DAG 中使用它时,我得到以下错误代码:
MySQLdb._exceptions.OperationalError: (2068, 'LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.')
现在我的猜测是管理员帐户没有权限将任何文件加载到给定的 database/table。当我检查 DBeaver 中的管理员用户权限时,这一点得到了确认;未选择 'file' 权限。
所以现在我正在尝试为管理员帐户添加此 FILE 权限,但我无法完成。
我尝试的是连接到 RDS SQL 服务器:mysql -h housing-project-db.ckvznkgqispo.eu-west-2.rds.amazonaws.com -P 3306 -u admin -p,之后我运行命令:
GRANT FILE ON mysql.* TO 'admin'@'housing-project-db.ckvznkgqispo.eu-west-2.rds.amazonaws.com' IDENTIFIED BY 'mysecretpassword';,之后我得到
您的 SQL 语法有误;查看与您的 MySQL 服务器版本相对应的手册,了解在第 1 行
的 'IDENTIFIED BY 'mysecretpassword’' 附近使用的正确语法当我搜索遇到此问题的其他人时,他们提供了这个作为解决方案,所以我根本不明白为什么我会收到语法错误...我正在使用 MySQL 服务器版本 8.0.
对你来说有点晚了,但其他人可能会尝试启用 allow_local_infile
。请查看 Airflow 文档 here。基本上,您将 allow_local_infile
参数添加到 MySQL Airflow 连接详细信息中的 Extras 部分。