🔧 MySQL 管理
MySQL 服务管理概述
MySQL 管理包括服务启动停止、配置文件管理、用户权限管理、性能监控等核心任务。掌握这些技能对于维护稳定的数据库环境至关重要。
服务管理命令
Linux 系统
# 启动 MySQL 服务
sudo systemctl start mysql
# 或者
sudo service mysql start
# 停止 MySQL 服务
sudo systemctl stop mysql
# 重启 MySQL 服务
sudo systemctl restart mysql
# 查看服务状态
sudo systemctl status mysql
# 设置开机自启
sudo systemctl enable mysql
Windows 系统
# 启动 MySQL 服务
net start mysql
# 停止 MySQL 服务
net stop mysql
# 通过服务管理器
services.msc
macOS 系统
# 启动 MySQL 服务
sudo /usr/local/mysql/support-files/mysql.server start
# 停止 MySQL 服务
sudo /usr/local/mysql/support-files/mysql.server stop
# 重启 MySQL 服务
sudo /usr/local/mysql/support-files/mysql.server restart
配置文件管理
📁 配置文件位置
- Linux: /etc/mysql/mysql.conf.d/mysqld.cnf
- Windows: C:\ProgramData\MySQL\MySQL Server 8.x\my.ini
- macOS: /usr/local/mysql/my.cnf
常用配置参数
[mysqld]
# 服务器配置
port = 3306
bind-address = 127.0.0.1
# 字符集配置
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 内存配置
innodb_buffer_pool_size = 1G
key_buffer_size = 256M
# 连接配置
max_connections = 200
max_connect_errors = 10
# 日志配置
log-error = /var/log/mysql/error.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
用户和权限管理
创建用户
-- 创建新用户
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
-- 创建可以从任何主机连接的用户
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
-- 修改用户密码
ALTER USER 'username'@'localhost' IDENTIFIED BY 'new_password';
权限管理
-- 授予所有权限
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
-- 授予特定数据库权限
GRANT SELECT, INSERT, UPDATE, DELETE ON database_name.* TO 'username'@'localhost';
-- 授予特定表权限
GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 查看用户权限
SHOW GRANTS FOR 'username'@'localhost';
-- 撤销权限
REVOKE INSERT ON database_name.* FROM 'username'@'localhost';
-- 删除用户
DROP USER 'username'@'localhost';
性能监控
查看服务器状态
-- 查看服务器状态
SHOW STATUS;
-- 查看特定状态变量
SHOW STATUS LIKE 'Connections';
SHOW STATUS LIKE 'Threads_connected';
SHOW STATUS LIKE 'Queries';
-- 查看进程列表
SHOW PROCESSLIST;
-- 查看服务器变量
SHOW VARIABLES;
-- 查看引擎状态
SHOW ENGINE INNODB STATUS;
性能分析
-- 启用慢查询日志
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 1;
-- 查看表状态
SHOW TABLE STATUS FROM database_name;
-- 分析表
ANALYZE TABLE table_name;
-- 优化表
OPTIMIZE TABLE table_name;
备份和恢复
使用 mysqldump 备份
# 备份单个数据库
mysqldump -u username -p database_name > backup.sql
# 备份所有数据库
mysqldump -u username -p --all-databases > all_backup.sql
# 备份特定表
mysqldump -u username -p database_name table_name > table_backup.sql
# 备份结构不备份数据
mysqldump -u username -p --no-data database_name > structure_only.sql
恢复数据
# 恢复数据库
mysql -u username -p database_name < backup.sql
# 恢复所有数据库
mysql -u username -p < all_backup.sql
⚠️ 管理注意事项
- 定期备份数据库,建议自动化备份
- 监控磁盘空间,避免空间不足
- 定期更新 MySQL 版本,修复安全漏洞
- 合理设置用户权限,遵循最小权限原则
- 监控慢查询,及时优化性能