参数说明

参数 说明
-D, --database 数据库名称
--delimiter 设置语句分隔符,默认为 ;
-e, --execute 执行命令
-h, --host 要连接的主机名
-p, --password 密码(注意:-p 和密码之间没有空格,仅 -p 表示提示输入密码)
-P, --port 端口号
-s, --silent 静默模式,减少输出。使用 \t 作为列分隔符
-ss 类似 -s,但省略列名
-S, --socket 指定 socket(Unix)或命名管道(Windows)用于连接本地实例
--skip-column-names 省略列名
-u, --user 用户名
-U, --safe-updates 设置 sql_safe_updates = ON,仅允许显式使用键的 DELETE 和 UPDATE
-V, --version 打印版本并退出

第 54.1 节:基本登录

从命令行访问 MySQL:

mysql --user=username --password=pwd --host=hostname test_db

可以简写为:

mysql -u username -p pwd -h hostname test_db

如果省略密码值,MySQL 会首先提示输入所需密码。如果你在命令行上指定密码,客户端会发出“不安全”警告:

mysql -u username -p -h hostname test_db

对于本地连接,可以使用 --socket 指向 socket 文件:

mysql --user=username --password=pwd --host=localhost --socket=/path/to/mysql.sock test_db

省略 socket 参数将导致客户端尝试连接到本地机器上的服务器。服务器必须正在运行才能连接。

第 54.2 节:执行命令

以下示例展示如何执行存储在字符串或脚本文件中的命令,无需交互式提示。当 shell 脚本需要与数据库交互时尤其有用。

从字符串执行命令

$ mysql -uroot -proot test -e 'select * from people'

结果:

+----+-------+--------+
| id | name  | gender |
+----+-------+--------+
|  1 | Kathy | f      |
|  2 | John  | m      |
+----+-------+--------+

要格式化为制表符分隔的网格,使用 --silent 参数:

$ mysql -uroot -proot test -s -e 'select * from people'
id      name    gender
1       Kathy   f
2       John    m

省略表头:

$ mysql -uroot -proot test -ss -e 'select * from people'
1       Kathy   f
2       John    m

从脚本文件执行

$ mysql -uroot -proot test < my_script.sql
$ mysql -uroot -proot test -e 'source my_script.sql'

将输出写入文件

$ mysql -uroot -proot test < my_script.sql > out.txt
$ mysql -uroot -proot test -s -e 'select * from people' > out.txt