MySQL 命令行工具(mysql
)是管理数据库的高效方式,尤其适合开发者、运维人员和对数据库操作有精细控制需求的用户,相比图形界面,它更轻量、灵活,且能通过脚本实现自动化操作。
准备工作
-
安装 MySQL
-
从 MySQL 官网 下载对应系统的安装包。
-
或通过包管理器安装(示例):
# Ubuntu/Debian sudo apt update && sudo apt install mysql-server # CentOS sudo yum install mysql-server
-
-
启动 MySQL 服务
sudo systemctl start mysql # 启动服务 sudo systemctl enable mysql # 设置开机自启
-
获取 root 密码
- 首次安装后,运行安全配置向导:
sudo mysql_secure_installation
- 按提示设置 root 密码并加固安全。
- 首次安装后,运行安全配置向导:
连接 MySQL 服务器
基础连接命令
mysql -u 用户名 -p
-u
:指定用户名(如root
)。-p
:提示输入密码(密码输入时不可见)。- 示例:
mysql -u root -p Enter password: ****** # 输入密码
高级连接选项
参数 | 作用 | 示例命令 |
---|---|---|
-h |
指定主机地址 | mysql -h 192.168.1.100 -u root -p |
-P |
指定端口(默认3306) | mysql -P 3307 -u root -p |
-D |
直接选择数据库 | mysql -D my_database -u root -p |
-e |
执行单条 SQL 后退出 | mysql -e "SHOW DATABASES;" -u root -p |
核心操作指南
数据库管理
-- 显示所有数据库 SHOW DATABASES; -- 创建数据库 CREATE DATABASE mydb; -- 删除数据库 DROP DATABASE mydb; -- 选择数据库 USE mydb;
表操作
-- 显示当前数据库的所有表 SHOW TABLES; -- 创建表 CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, email VARCHAR(100) ); -- 查看表结构 DESCRIBE users; -- 删除表 DROP TABLE users;
数据增删改查(CRUD)
-- 插入数据 INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com'); -- 查询数据 SELECT * FROM users; -- 所有数据 SELECT name FROM users WHERE id = 1; -- 条件查询 -- 更新数据 UPDATE users SET email = 'new@example.com' WHERE id = 1; -- 删除数据 DELETE FROM users WHERE id = 1;
用户与权限管理
-- 创建用户 CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; -- 授予权限(示例:授予 mydb 的所有权限) GRANT ALL PRIVILEGES ON mydb.* TO 'newuser'@'localhost'; -- 刷新权限 FLUSH PRIVILEGES; -- 撤销权限 REVOKE ALL PRIVILEGES ON mydb.* FROM 'newuser'@'localhost';
高效使用技巧
-
批量执行 SQL 文件
mysql -u root -p mydb < /path/to/script.sql
-
导出数据库
mysqldump -u root -p mydb > mydb_backup.sql
-
启用详细日志
启动时添加-v
参数显示执行详情:mysql -u root -p -v
-
自定义提示符
在~/.my.cnf
中添加:[mysql] prompt="\\u@\\d> " # 显示格式:用户名@数据库>
常见问题解决
-
连接被拒绝(Access Denied)
- 检查用户名/密码是否正确。
- 确认用户是否有远程访问权限(如
'user'@'%'
)。
-
忘记 root 密码
- 步骤:
- 停止 MySQL 服务:
sudo systemctl stop mysql
- 启动免密模式:
sudo mysqld_safe --skip-grant-tables &
- 重设密码:
UPDATE mysql.user SET authentication_string=PASSWORD('new_pass') WHERE User='root'; FLUSH PRIVILEGES;
- 重启服务。
- 停止 MySQL 服务:
- 步骤:
-
命令输入错误
- 用
\c
取消当前命令,或按Ctrl+C
中断。
- 用
安全注意事项
-
避免明文密码
使用mysql_config_editor
存储加密凭证:mysql_config_editor set --login-path=local --user=root --password
连接时直接调用:
mysql --login-path=local
-
最小权限原则
禁止为普通用户分配ALL PRIVILEGES
,按需授权(如SELECT, INSERT
)。 -
定期备份
使用mysqldump
或mysqlpump
定时备份关键数据。
掌握 MySQL 命令行是数据库管理的核心技能,它提供更快的响应速度和更底层的控制能力,建议结合官方文档实践复杂操作,并始终遵循安全最佳实践。
引用说明
- MySQL 8.0 官方文档:dev.mysql.com/doc
- 权限管理指南:MySQL Privilege System
- 备份工具参考:mysqldump 使用手册
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5565.html