解决 MySQL Workbench 导入数据到 Azure 数据库时访问权限被拒绝问题
2024-03-06 09:42:24
使用 MySQL Workbench 导入大型数据集到 Azure 数据库的指南
在使用 MySQL Workbench 将大型数据集导入到 Azure 数据库时,经常会遇到错误 1045,提示访问权限被拒绝。本指南将深入探讨这个问题,并提供分步解决方案,帮助你成功导入数据。
问题
错误 1045 "Access denied for user '[my_username]'@'%' (using password: YES)" 通常表明用于连接到 Azure 数据库的用户名或密码不正确。或者,可能是该用户尚未被授予访问数据库的权限。
解决方法
步骤 1:验证凭据
确保使用的是 Azure 数据库管理员帐户的用户名和密码。仔细检查凭据是否正确输入。
步骤 2:授予访问权限
如果凭据正确,则需要授予用户访问 Azure 数据库的权限:
- 在 Azure 门户中,导航到你的 Azure 数据库。
- 选择 "安全性" > "防火墙和虚拟网络"。
- 单击 "添加客户端 IP 地址"。
- 输入你的计算机 IP 地址。
- 在 "用户名" 字段中,输入要授予权限的用户。
- 单击 "保存"。
步骤 3:调整 MySQL Workbench 连接设置
更新 MySQL Workbench 中的连接设置:
- 右键单击 Azure 数据库连接,选择 "编辑连接"。
- 输入已授予访问权限的用户名和密码。
- 单击 "测试连接" 确认连接成功。
导入数据
获取访问权限后,即可导入数据:
步骤 4:使用 LOAD DATA INFILE 语句
修改 LOAD DATA INFILE 语句:
LOAD DATA LOCAL INFILE 'C:\Users\natal\Documents\Masters\Cuny SPS MDS\Spring 2024\Data 607\job_postings_revised.csv' INTO TABLE job_postings
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
- 添加 OPTIONALLY ENCLOSED BY '"' 允许 CSV 字段包含引号。
- 使用 LOAD DATA LOCAL INFILE,因为它适用于导入到远程数据库。
步骤 5:执行查询
在 MySQL Workbench 中运行 LOAD DATA LOCAL INFILE 查询,开始导入过程。
其他提示
- 确保 CSV 文件格式正确,没有语法错误。
- 增加连接超时设置,避免超时错误。
- 如果仍遇到问题,请咨询 Azure 技术支持。
常见问题解答
1. 如何验证用户是否具有访问权限?
在 Azure 门户中,导航到你的 Azure 数据库,选择 "安全性" > "管理员",查看是否有要导入数据的用户。
2. 如何确定 CSV 文件格式是否正确?
使用文本编辑器打开 CSV 文件,检查字段是否以逗号分隔,引号是否正确转义。
3. 如何防止导入过程超时?
在 MySQL Workbench 的 "编辑连接" 对话框中,增加 "连接超时" 设置。
4. 为什么在导入过程中会遇到错误 1290?
错误 1290 "The MySQL server is running with the --secure-file-priv option so it cannot execute this statement" 表示需要在 MySQL 服务器上配置 secure_file_priv 选项。将其设置为目录路径,例如 /var/lib/mysql-files。
5. 如何处理导入过程中的重复数据?
在 LOAD DATA INFILE 语句中使用 IGNORE ,例如 IGNORE 1 LINES,忽略特定的行。