一、基本登录语法
mysql [options] [database] [-e "SQL语句"]
二、常用连接参数详解
参数 | 全称 | 说明 | 示例 |
---|---|---|---|
-h | --host | 服务器地址(主机名或IP) | -h localhost , -h 192.168.1.100 |
-P | --port | 服务器端口(默认3306) | -P 3307 , -P 3306 |
-u | --user | 用户名 | -u root , -u app_user |
-p | --password | 密码提示(推荐) | -p (交互式输入) |
-p密码 | --password=密码 | 直接指定密码(不安全) | -proot (不推荐) |
-D | --database | 指定初始数据库 | -D test , -D mysql |
-e | --execute | 执行SQL语句后退出 | -e "SHOW DATABASES;" |
-V | --version | 显示版本信息 | mysql -V |
-v | --verbose | 详细输出模式 | mysql -v |
三、常见登录场景示例
1. 基本本地登录
方式1:交互式输入密码(推荐)
mysql -h localhost -u root -p
方式2:直接指定密码(不安全,会有警告)
mysql -h localhost -u root -proot
方式3:使用默认值(localhost:3306, root用户)
mysql -u root -p
2. 远程服务器登录
登录远程MySQL服务器
mysql -h 192.168.1.100 -P 3306 -u remote_user -p
使用域名连接
mysql -h mysql.example.com -u app_user -p
3. 指定初始数据库
登录后直接使用test数据库
mysql -u root -p test
或者使用-D参数
mysql -u root -p -D test
4. 执行单条SQL命令后退出
查看数据库列表
mysql -u root -p -e "SHOW DATABASES;"
查看表结构
mysql -u root -p test -e "DESC users;"
执行查询并格式化输出
mysql -u root -p test -e "SELECT * FROM users LIMIT 5\G"
执行多条SQL语句
mysql -u root -p -e "USE test; SHOW TABLES; SELECT COUNT(*) FROM users;"
5. 使用配置文件免密码登录
创建 `~/.my.cnf` 文件(Linux)或 `%APPDATA%\MySQL\.my.cnf`(Windows):
[client]
host=localhost
user=root
password=your_password
database=test
然后直接使用:
mysql # 自动使用配置文件中的凭据
四、安全登录最佳实践
1. 避免在命令行中暴露密码
不推荐(密码会出现在历史记录中):
mysql -u root -proot
推荐做法:
交互式输入密码
mysql -u root -p
然后输入密码
或者使用MYSQL_PWD环境变量(仍然有风险)
MYSQL_PWD=your_password mysql -u root
2. 使用登录路径(MySQL Config Editor)
保存登录凭据(加密存储)
mysql_config_editor set --login-path=local --host=localhost --user=root --password
使用保存的登录路径
mysql --login-path=local
保存多个连接配置
mysql_config_editor set --login-path=production --host=db.example.com --user=admin --password
mysql --login-path=production
3. 使用SSH隧道安全连接
建立SSH隧道
ssh -L 3307:localhost:3306 user@remote-server.com
然后通过本地端口连接
mysql -h 127.0.0.1 -P 3307 -u root -p
五、退出MySQL服务器
MySQL 提供了多种退出方式,所有方式都是等价的:
方式1:使用EXIT
EXIT;
方式2:使用QUIT
QUIT;
方式3:使用缩写
\q
方式4:使用快捷键(在某些客户端中)
Ctrl + D
退出后显示:
Bye
六、高级用法和技巧
1. 输出格式化
表格格式(默认)
mysql -u root -p -e "SELECT * FROM users"
垂直格式(\G)
mysql -u root -p -e "SELECT * FROM users LIMIT 1\G"
无边框格式
mysql -u root -p -B -e "SELECT * FROM users"
HTML格式输出
mysql -u root -p -H -e "SELECT * FROM users"
XML格式输出
mysql -u root -p -X -e "SELECT * FROM users"
2. 批量执行SQL文件
执行SQL脚本文件
mysql -u root -p test < import_data.sql
执行多个SQL文件
mysql -u root -p test < script1.sql < script2.sql
输出结果到文件
mysql -u root -p -e "SELECT * FROM users" > output.txt
3. 连接超时和重试设置
设置连接超时时间
mysql --connect-timeout=10 -u root -p
启用重连功能
mysql --reconnect -u root -p
禁用自动重连
mysql --skip-reconnect -u root -p
4. 调试连接问题
显示连接详细信息
mysql --verbose -u root -p
测试连接而不执行命令
mysql --skip-column-names --silent -e "SELECT 1" > /dev/null && echo "Connected" || echo "Failed"
查看连接状态
mysqladmin -u root -p status
七、故障排除
1. 常见连接错误
错误:Access denied
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
解决方案:检查用户名/密码,或重置权限
错误:Can't connect to server
ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (111)
解决方案:检查MySQL服务是否启动,端口是否正确
2. 检查连接状态
查看当前连接
mysql -u root -p -e "SHOW PROCESSLIST;"
查看连接统计
mysql -u root -p -e "SHOW STATUS LIKE 'Threads_connected';"
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程