当前位置: 首页 > news >正文

Linux命令-mysql(MySQL服务器客户端工具)

mysql是 MySQL 数据库的命令行客户端工具,用于连接、操作和管理 MySQL 数据库服务器。它不是 Linux 系统命令,而是 MySQL 数据库的客户端程序。

📖 基本语法

mysql[选项][数据库名]

🎯 常用连接选项

选项说明
-h,--host=主机名数据库服务器主机(默认 localhost)。
-P,--port=端口号数据库服务器端口(默认 3306)。
-u,--user=用户名连接用户名(默认当前系统用户)。
-p,--password[=密码]密码提示。为安全起见,建议只写-p在提示时输入。
-S,--socket=套接字文件用于本地连接的 Unix 套接字文件。
--protocol=协议连接协议:tcp, socket, pipe, memory。

💡 核心用法示例

1. 连接数据库
# 连接到本地数据库(使用当前系统用户)mysql# 连接到本地数据库(指定用户,提示输入密码)mysql-uroot-p# 连接到远程数据库mysql-hdb.example.com-uadmin-p# 连接到指定数据库mysql-uuser-pdatabase_name# 使用 socket 连接mysql-uroot-p-S/var/run/mysqld/mysqld.sock
2. 执行 SQL 语句
# 执行单条 SQL 语句mysql-uroot-p-e"SHOW DATABASES;"# 执行多条 SQL 语句mysql-uroot-p-e"SHOW DATABASES; USE mysql; SHOW TABLES;"# 从文件执行 SQL 脚本mysql-uroot-p<backup.sql# 执行 SQL 并输出到文件mysql-uroot-p-e"SELECT * FROM users;">output.txt
3. 交互式操作

进入 mysql 交互模式后,可以执行各种 SQL 命令:

-- 显示所有数据库SHOWDATABASES;-- 使用特定数据库USEdatabase_name;-- 显示当前数据库的所有表SHOWTABLES;-- 查看表结构DESCRIBEtable_name;DESCtable_name;SHOWCOLUMNSFROMtable_name;-- 执行查询SELECT*FROMusersWHEREid=1;-- 退出 mysqlEXIT;\q QUIT;

🔧 常用客户端选项

选项说明
-D,--database=数据库名指定要使用的数据库。
-e,--execute=SQL语句执行 SQL 语句并退出。
-f,--force遇到错误继续执行。
-v,--verbose显示详细输出。
-V,--version显示版本信息。
--batch,-B以制表符分隔格式输出,无边框。
--html生成 HTML 格式输出。
--xml生成 XML 格式输出。
--skip-column-names不显示列名。
--sigint-ignore忽略 SIGINT 信号(Ctrl+C)。
-H,--html以 HTML 格式输出(同 --html)。
-X,--xml以 XML 格式输出(同 --xml)。

📊 输出格式控制

# 默认表格格式mysql-uroot-p-e"SELECT * FROM users LIMIT 3;"# 制表符分隔(适合脚本处理)mysql-uroot-p-B-e"SELECT * FROM users LIMIT 3;"# 不显示列名mysql-uroot-p-B-N-e"SELECT * FROM users LIMIT 3;"# HTML 格式输出mysql-uroot-p-H-e"SELECT * FROM users LIMIT 3;">users.html# XML 格式输出mysql-uroot-p-X-e"SELECT * FROM users LIMIT 3;">users.xml# 垂直格式显示(每列一行)mysql-uroot-p-E-e"SELECT * FROM users WHERE id=1;"

🔍 配置文件

MySQL 客户端可以从以下位置读取配置:

  1. /etc/my.cnf- 全局配置文件
  2. /etc/mysql/my.cnf- 全局配置文件
  3. ~/.my.cnf- 用户配置文件
  4. ./.my.cnf- 当前目录配置文件

示例 ~/.my.cnf 配置

[client] host=localhost user=root password=your_password database=mydb port=3306

设置配置文件权限:

chmod600~/.my.cnf

⚙️ 交互模式下的特殊命令

在 mysql 交互模式中,除了 SQL 语句,还可以使用以下命令(以反斜杠开头或特定关键字):

命令说明
\c取消当前命令。
\q,exit,quit退出 mysql。
\G垂直显示结果(每列一行)。
\g执行命令(同 ;)。
\s显示服务器状态信息。
\h,help显示帮助信息。
\u,use切换数据库,如\u dbname
\r,reconnect重新连接到服务器。
\!执行系统 Shell 命令,如\! ls
\T开始记录输出到文件,如\T /tmp/mysql.log
\t停止记录输出。
\#/*! */MySQL 特有的注释,可在其他数据库忽略。
source\.执行 SQL 脚本文件,如source file.sql\. file.sql
system执行系统 Shell 命令,如system ls
status显示服务器状态。
nowarning忽略警告信息。
warnings显示警告信息。
charset切换字符集,如charset utf8mb4

📋 实用操作示例

1. 数据库备份与恢复
# 备份单个数据库mysqldump-uroot-pdatabase_name>backup.sql# 恢复数据库mysql-uroot-pdatabase_name<backup.sql# 备份所有数据库mysqldump-uroot-p--all-databases>all_backup.sql# 只备份结构mysqldump-uroot-p--no-data database_name>structure.sql# 只备份数据mysqldump-uroot-p--no-create-info database_name>data.sql
2. 批量操作
# 批量执行 SQL 文件forfilein*.sql;doecho"处理文件:$file"mysql-uroot-pdatabase_name<"$file"done# 从 CSV 导入数据mysql-uroot-p-e"LOAD DATA INFILE '/path/to/data.csv' INTO TABLE mytable FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';"# 导出查询结果到 CSVmysql-uroot-p-B-e"SELECT * FROM users"|sed's/\t/,/g'>users.csv
3. 脚本自动化
#!/bin/bash# 自动备份数据库脚本DB_USER="root"DB_PASS="password"DB_NAME="mydb"BACKUP_DIR="/backup/mysql"DATE=$(date+%Y%m%d_%H%M%S)# 创建备份目录mkdir-p"$BACKUP_DIR"# 备份数据库mysqldump-u"$DB_USER"-p"$DB_PASS""$DB_NAME">"$BACKUP_DIR/${DB_NAME}_$DATE.sql"# 压缩备份gzip"$BACKUP_DIR/${DB_NAME}_$DATE.sql"# 保留最近7天备份find"$BACKUP_DIR"-name"*.sql.gz"-mtime+7-deleteecho"备份完成:$BACKUP_DIR/${DB_NAME}_$DATE.sql.gz"
4. 数据库管理
-- 创建数据库CREATEDATABASEnewdbCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;-- 创建用户并授权CREATEUSER'newuser'@'localhost'IDENTIFIEDBY'password';GRANTALLPRIVILEGESONnewdb.*TO'newuser'@'localhost';FLUSHPRIVILEGES;-- 查看用户权限SHOWGRANTSFOR'newuser'@'localhost';-- 查看进程SHOWPROCESSLIST;-- 杀死进程KILLprocess_id;-- 查看系统变量SHOWVARIABLESLIKE'%timeout%';

⚠️ 安全注意事项

  1. 密码安全

    # 不安全:密码在命令行中可见mysql-uroot-ppassword# 安全:提示输入密码mysql-uroot-p# 或使用配置文件mysql --defaults-file=~/.my.cnf
  2. 远程连接安全

    # 使用 SSL 连接mysql --ssl-mode=REQUIRED-hremote_host-uuser-p# 指定 SSL 证书mysql --ssl-ca=/path/to/ca.pem --ssl-cert=/path/to/client-cert.pem --ssl-key=/path/to/client-key.pem
  3. 执行危险操作前备份

    # 删除数据前先备份mysqldump-uroot-pdatabase_name>backup_before_delete.sql mysql-uroot-p-e"DELETE FROM large_table WHERE condition;"

🔧 故障排除

1. 连接问题
# 检查 MySQL 服务状态systemctl status mysql# 或servicemysql status# 检查端口监听netstat-tlnp|grep3306ss-tlnp|grep3306# 检查防火墙sudoufw statussudofirewall-cmd --list-all# 检查错误日志tail-f/var/log/mysql/error.log
2. 权限问题
-- 检查用户权限SELECT*FROMmysql.userWHEREUser='username'\G-- 修复权限GRANTALLPRIVILEGESONdatabase.*TO'user'@'localhost';FLUSHPRIVILEGES;
3. 编码问题
-- 查看当前字符集设置SHOWVARIABLESLIKE'character_set%';SHOWVARIABLESLIKE'collation%';-- 设置字符集SETNAMES utf8mb4;

📌 最佳实践

  1. 使用配置文件:避免在命令行中暴露密码。
  2. 使用提示符:在脚本中使用read -s安全读取密码:
    read-sp"MySQL 密码: "MYSQL_PASSWORD mysql-uroot -p"$MYSQL_PASSWORD"-e"SHOW DATABASES;"
  3. 备份重要数据:在执行DROPDELETE等操作前先备份。
  4. 使用事务:对于重要操作,使用事务确保数据一致性:
    STARTTRANSACTION;-- 执行操作COMMIT;-- 或回滚ROLLBACK;
  5. 监控性能:使用EXPLAIN分析查询性能:
    EXPLAINSELECT*FROMusersWHEREage>30;

mysql客户端是管理 MySQL 数据库的强大工具,掌握其用法对于数据库管理员和开发人员都至关重要。无论是简单的查询还是复杂的数据库管理,都可以通过命令行高效完成。

http://www.jsqmd.com/news/573733/

相关文章:

  • C语言实战:Kruskal算法与并查集在最小生成树中的高效应用
  • Real-ESRGAN-GUI:AI图像超分辨率处理的高效解决方案
  • 7步打造专业提示词链:提示词工程的进阶实践指南
  • 高效全场景iCalendar生成工具:从入门到精通的Node.js实现方案
  • AI辅助开发:描述需求,快马AI自动生成旅行商问题算法与可视化
  • 2026济南打桩机服务商五强揭晓:深度解析市场格局与口碑之选 - 2026年企业推荐榜
  • 珠海内有哪些做专精特新,创新型中小企业。权代理事务通过率高
  • AKS 集群 Helm 部署 Prometheus + Grafana 监控平台
  • Windows下OpenClaw安装避坑:对接Gemma-3-12b-it模型完整流程
  • PVNet复现实战:用PyTorch1.5.1+CUDA10.2搞定3D位姿估计(附数据集处理技巧)
  • 【Java函数计算高可用架构】:基于Spring Cloud Function的弹性扩缩容方案,已落地金融级日均亿级调用
  • OpenClaw+Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF:3种低成本内容生成方案对比
  • AI辅助开发新体验:描述你的流程,让快马智能生成和优化流程图代码
  • JSW-8016GM4 加固交换机
  • 如何轻松获取网页媒体资源?猫抓开源工具让资源提取效率提升3倍
  • AI赋能开发:让快马平台智能生成你的下一代oh-my-opencode项目
  • Iptables 实战指南:从基础规则到高级网络防护
  • ai辅助开发:用自然语言让快马生成复杂嵌套的vuedraggable看板应用
  • 告别重复编码,用快马AI生成黑马点评核心模块,开发效率翻倍
  • Kandinsky-5.0-I2V-Lite-5s图像转视频实战:Python入门者快速上手指南
  • Elsevier投稿跟踪:科研工作者必备的智能投稿管理工具终极指南
  • 3步搞定iOS微信聊天记录完整导出:WeChatExporter终极指南
  • 集团企业数字化:低代码如何实现多子公司、多系统的统一管理?
  • 掌握高效自动化抢票:3个专业策略突破90%成功率瓶颈
  • OpenClaw (小龙虾) Windows 11 一键部署全攻略 2026|内置 491 款大模型目前最全
  • SEO数据分析工具如何进行网站诊断
  • EcomGPT-7B电商大模型嵌入式开发:基于YOLOv8的商品图像识别联动系统
  • OPCUA结构体数据处理全解析:C#如何高效读写ExtensionObject中的复杂数据
  • Linux命令-mysqladmin(MySQL服务器管理客户端)
  • Windows下OpenClaw安装避坑指南:千问3.5-35B-A3B-FP8接口对接详解