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.sock2. 执行 SQL 语句# 执行单条 SQL 语句mysql-uroot-p-eSHOW DATABASES;# 执行多条 SQL 语句mysql-uroot-p-eSHOW DATABASES; USE mysql; SHOW TABLES;# 从文件执行 SQL 脚本mysql-uroot-pbackup.sql# 执行 SQL 并输出到文件mysql-uroot-p-eSELECT * FROM users;output.txt3. 交互式操作进入 mysql 交互模式后可以执行各种 SQL 命令-- 显示所有数据库SHOWDATABASES;-- 使用特定数据库USEdatabase_name;-- 显示当前数据库的所有表SHOWTABLES;-- 查看表结构DESCRIBEtable_name;DESCtable_name;SHOWCOLUMNSFROMtable_name;-- 执行查询SELECT*FROMusersWHEREid1;-- 退出 mysqlEXIT;\q QUIT; 常用客户端选项选项说明-D,--database数据库名指定要使用的数据库。-e,--executeSQL语句执行 SQL 语句并退出。-f,--force遇到错误继续执行。-v,--verbose显示详细输出。-V,--version显示版本信息。--batch,-B以制表符分隔格式输出无边框。--html生成 HTML 格式输出。--xml生成 XML 格式输出。--skip-column-names不显示列名。--sigint-ignore忽略 SIGINT 信号CtrlC。-H,--html以 HTML 格式输出同 --html。-X,--xml以 XML 格式输出同 --xml。 输出格式控制# 默认表格格式mysql-uroot-p-eSELECT * FROM users LIMIT 3;# 制表符分隔适合脚本处理mysql-uroot-p-B-eSELECT * FROM users LIMIT 3;# 不显示列名mysql-uroot-p-B-N-eSELECT * FROM users LIMIT 3;# HTML 格式输出mysql-uroot-p-H-eSELECT * FROM users LIMIT 3;users.html# XML 格式输出mysql-uroot-p-X-eSELECT * FROM users LIMIT 3;users.xml# 垂直格式显示每列一行mysql-uroot-p-E-eSELECT * FROM users WHERE id1; 配置文件MySQL 客户端可以从以下位置读取配置/etc/my.cnf- 全局配置文件/etc/mysql/my.cnf- 全局配置文件~/.my.cnf- 用户配置文件./.my.cnf- 当前目录配置文件示例 ~/.my.cnf 配置[client] hostlocalhost userroot passwordyour_password databasemydb port3306设置配置文件权限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_namebackup.sql# 恢复数据库mysql-uroot-pdatabase_namebackup.sql# 备份所有数据库mysqldump-uroot-p--all-databasesall_backup.sql# 只备份结构mysqldump-uroot-p--no-data database_namestructure.sql# 只备份数据mysqldump-uroot-p--no-create-info database_namedata.sql2. 批量操作# 批量执行 SQL 文件forfilein*.sql;doecho处理文件:$filemysql-uroot-pdatabase_name$filedone# 从 CSV 导入数据mysql-uroot-p-eLOAD DATA INFILE /path/to/data.csv INTO TABLE mytable FIELDS TERMINATED BY , LINES TERMINATED BY \n;# 导出查询结果到 CSVmysql-uroot-p-B-eSELECT * FROM users|seds/\t/,/gusers.csv3. 脚本自动化#!/bin/bash# 自动备份数据库脚本DB_USERrootDB_PASSpasswordDB_NAMEmydbBACKUP_DIR/backup/mysqlDATE$(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-mtime7-deleteecho备份完成:$BACKUP_DIR/${DB_NAME}_$DATE.sql.gz4. 数据库管理-- 创建数据库CREATEDATABASEnewdbCHARACTERSETutf8mb4COLLATEutf8mb4_unicode_ci;-- 创建用户并授权CREATEUSERnewuserlocalhostIDENTIFIEDBYpassword;GRANTALLPRIVILEGESONnewdb.*TOnewuserlocalhost;FLUSHPRIVILEGES;-- 查看用户权限SHOWGRANTSFORnewuserlocalhost;-- 查看进程SHOWPROCESSLIST;-- 杀死进程KILLprocess_id;-- 查看系统变量SHOWVARIABLESLIKE%timeout%;⚠️ 安全注意事项密码安全# 不安全密码在命令行中可见mysql-uroot-ppassword# 安全提示输入密码mysql-uroot-p# 或使用配置文件mysql --defaults-file~/.my.cnf远程连接安全# 使用 SSL 连接mysql --ssl-modeREQUIRED-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执行危险操作前备份# 删除数据前先备份mysqldump-uroot-pdatabase_namebackup_before_delete.sql mysql-uroot-p-eDELETE 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.log2. 权限问题-- 检查用户权限SELECT*FROMmysql.userWHEREUserusername\G-- 修复权限GRANTALLPRIVILEGESONdatabase.*TOuserlocalhost;FLUSHPRIVILEGES;3. 编码问题-- 查看当前字符集设置SHOWVARIABLESLIKEcharacter_set%;SHOWVARIABLESLIKEcollation%;-- 设置字符集SETNAMES utf8mb4; 最佳实践使用配置文件避免在命令行中暴露密码。使用提示符在脚本中使用read -s安全读取密码read-spMySQL 密码: MYSQL_PASSWORD mysql-uroot -p$MYSQL_PASSWORD-eSHOW DATABASES;备份重要数据在执行DROP、DELETE等操作前先备份。使用事务对于重要操作使用事务确保数据一致性STARTTRANSACTION;-- 执行操作COMMIT;-- 或回滚ROLLBACK;监控性能使用EXPLAIN分析查询性能EXPLAINSELECT*FROMusersWHEREage30;mysql客户端是管理 MySQL 数据库的强大工具掌握其用法对于数据库管理员和开发人员都至关重要。无论是简单的查询还是复杂的数据库管理都可以通过命令行高效完成。