mysql -u用户名 -p 数据库名 < 文件.sql
命令,需先安装MySQL客户端,执行时输入密码,文件路径需正确,或登录MySQL后使用source 文件.sql
命令。在Linux系统中执行SQL文件是数据库管理、数据迁移或批量操作的常见需求,以下详细说明多种方法(以MySQL、PostgreSQL为例),确保操作安全高效:
准备工作
-
安装数据库客户端
- MySQL/MariaDB:
sudo apt install mysql-client
(Debian/Ubuntu) 或sudo yum install mysql
(CentOS/RHEL) - PostgreSQL:
sudo apt install postgresql-client
或sudo yum install postgresql
- 验证安装:
mysql --version
或psql --version
- MySQL/MariaDB:
-
准备SQL文件
- 确认文件路径(如
/home/user/script.sql
需符合SQL语法规范。 - 检查权限:
chmod +r /path/to/file.sql
确保当前用户有读取权限。
- 确认文件路径(如
执行SQL文件的命令
方法1:通过命令行直接执行(推荐)
-
MySQL/MariaDB
mysql -u [用户名] -p[密码] -h [主机地址] [数据库名] < /路径/文件.sql
- 示例(登录后执行):
mysql -u root -p mysql> source /path/to/file.sql;
- 重要参数:
--force
:忽略错误继续执行
--verbose
:显示详细执行过程
- 示例(登录后执行):
-
PostgreSQL
psql -U [用户名] -h [主机地址] -d [数据库名] -f /路径/文件.sql
- 示例(交互模式):
psql -U postgres -d mydb mydb=> i /path/to/file.sql
- 示例(交互模式):
方法2:结合管道符(无需密码)
cat /path/to/file.sql | mysql -u root -p[密码]
注意:密码紧贴
-p
存在安全风险,建议省略密码参数,执行后手动输入。
方法3:使用source
命令(MySQL交互模式)
mysql> USE database_name; mysql> SOURCE /path/to/file.sql;
常见错误及解决
-
权限拒绝
- 错误:
ERROR 1045 (28000): Access denied
- 解决:
- 检查用户名/密码:
mysql -u root -p
(正确输入密码) - 授权用户:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost';
- 检查用户名/密码:
- 错误:
-
文件路径错误
- 错误:
Cannot open file '/path/file.sql'
- 解决:
- 使用绝对路径:
/home/user/file.sql
- 检查路径权限:
ls -l /path/to/file.sql
- 使用绝对路径:
- 错误:
-
SQL语法错误
- 错误:
ERROR 1064 (42000) at line 5
- 解决:
- 调试文件:
head -n 5 file.sql
检查前5行语法 - 分步执行:拆分大文件为小段测试
- 调试文件:
- 错误:
安全注意事项
-
密码安全
- 避免在命令中明文写密码(如
-p123456
),改用提示输入:mysql -u root -p
- 使用配置文件(
~/.my.cnf
)存储凭证:[client] user = root password = 你的密码
- 避免在命令中明文写密码(如
-
生产环境操作规范
- 先备份数据库:
mysqldump -u root -p dbname > backup.sql
- 测试环境验证:在非生产环境预执行SQL文件
- 使用事务:SQL文件开头添加
START TRANSACTION;
便于出错回滚
- 先备份数据库:
高级技巧
-
批量执行多个SQL文件
for file in /sql/*.sql; do mysql -u root -p dbname < $file; done
-
记录执行日志
mysql -u root -p dbname < file.sql 2> error.log
-
定时任务(Cron)
编辑crontab:crontab -e
添加:0 3 * * * /usr/bin/mysql -u root -p密码 dbname < /daily_update.sql
引用说明
- MySQL官方文档:Command-Line Client
- PostgreSQL官方指南:psql Commands
- Linux权限管理:File Permissions Guide
提示:操作前务必验证SQL文件内容,避免意外覆盖数据,对于关键业务,建议由DBA审核脚本。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/38915.html