参数说明
| 参数 | 说明 |
|---|---|
| -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