mysql:mysql 命令用于连接和管理 MySQL 或 MariaDB 数据库。它提供了一个命令行客户端,允许用户执行 SQL 查询、管理数据库和用户权限、查看和修改表结构等。
一、语法
mysql [OPTIONS] [database]
二、选项
帮助和输出选项
- -?, --help:显示帮助信息并退出。
- -I, --help:-? 的同义词。
- --abort-source-on-error:在发生错误时中止 source filename 操作。
- --auto-rehash:启用自动重新哈希功能,不必使用 rehash 来获取表和字段的自动补全,但启动和重连时间可能会增加。默认启用,可用 --skip-auto-rehash 禁用。
- -A, --no-auto-rehash:不自动重新哈希,需手动使用 rehash 获取补全功能。这能加快 mysql 的启动和重连。
- --auto-vertical-output:如果结果比终端宽,则自动切换到垂直输出模式。
- -B, --batch:不使用历史文件,禁用交互模式,启用 --silent 模式。
显示和格式化选项
- --binary-as-hex:以十六进制格式显示二进制数据。
- --character-sets-dir=name:字符集文件目录。
- --column-type-info:显示列的类型信息。
- -c, --comments:保留注释并发送到服务器,默认丢弃注释,可用 --comments 启用。
- -C, --compress:在服务器/客户端协议中启用压缩。
- -#, --debug[=#]:非调试版本,捕捉此并退出。
- --debug-check:在退出时检查内存和打开文件的使用情况。
- -T, --debug-info:退出时显示一些调试信息。
数据库连接和操作选项
- -D, --database=name:要使用的数据库。
- --default-character-set=name:设置默认字符集。
- --delimiter=name:要使用的分隔符。
- -e, --execute=name:执行命令并退出,禁用 --force 和历史文件。
- -f, --force:即使出现 SQL 错误也继续执行,将 abort-source-on-error 设置为 0。
- -G, --named-commands:启用命名命令。命名命令可以在查询的任何行使用,否则只能在第一行使用。
安全和认证选项
- --local-infile:启用/禁用 LOAD DATA LOCAL INFILE。
- -b, --no-beep:关闭错误时的提示音。
- -h, --host=name:连接到指定主机。
- -H, --html:以 HTML 格式输出。
- -X, --xml:以 XML 格式输出。
- -S, --socket=name:指定用于连接的套接字文件路径。
其他选项
- -q, --quick:不缓存结果,逐行打印,可能会减慢服务器响应,不使用历史文件。
- -r, --raw:输出字段不进行转换,通常与 --batch 结合使用。
- --ssl:启用 SSL 连接(可与其他 SSL 选项一同使用)。
- --ssl-ca=name、--ssl-cert=name 等:用于指定 SSL 证书和密钥。
- -t, --table:以表格格式输出。
登录和会话控制选项
- -u, --user=name:用于登录的用户名。
- -p, --password[=name]:用于连接服务器的密码,如果未提供密码,将提示输入。
- -P, --port=#:连接端口号,默认为 3306。
- --connect-timeout=#:连接超时时间(秒)。
- --max-allowed-packet=#:发送和接收的最大数据包长度。
交互模式和错误控制
- --progress-reports:显示长时间运行命令的进度(如 ALTER TABLE)。
- -v, --verbose:显示更多信息。
- -V, --version:输出版本信息并退出。
- -w, --wait:等待并重试连接。
三、示例
- 连接到 MySQL 服务器
mysql -u root -p
- 指定主机和端口连接
mysql -u root -p -h 192.168.1.10 -P 3306
- 执行 SQL 语句并退出
mysql -u root -p -e "SHOW DATABASES;"
- 以批处理模式执行并输出到文件
mysql -u root -p -B -e "SELECT * FROM my_table;" > output.tsv
- 指定的套接字文件路径 /var/run/mysqld/mysqld.sock 连接到 MySQL 服务器
mysql -u root -p --socket=/var/run/mysqld/mysqld.sock