在Linux系统中运行MySQL数据库是服务器部署中的常见场景,其过程涉及环境准备、安装配置、服务管理、安全设置及日常维护等多个环节,以下从实践角度详细说明具体步骤和注意事项。
环境准备与安装
系统环境选择
Linux发行版中,Ubuntu/Debian和CentOS/RHEL是主流选择,以Ubuntu 22.04和CentOS 7为例,两者包管理工具不同(Ubuntu用apt
,CentOS用yum
),但MySQL安装逻辑一致,需确保系统为64位,内存至少2GB(推荐4GB以上),磁盘空间预留10GB以上。
安装MySQL
-
Ubuntu/Debian系统:
更新软件源后安装MySQL服务器包:sudo apt update sudo apt install mysql-server -y
安装过程中会自动启动MySQL服务,可通过
systemctl status mysql
检查状态。 -
CentOS/RHEL系统:
先安装MySQL官方仓库(如MySQL 8.0):sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm -y sudo yum install mysql-community-server -y
安装后启动服务:
sudo systemctl start mysqld
。
验证安装
安装完成后,通过以下命令验证MySQL版本:
mysql --version
若显示版本信息(如mysql Ver 8.0.33 for Linux on x86_64
),则安装成功。
MySQL服务管理
MySQL在Linux中通常以系统服务形式运行,使用systemctl
命令管理其生命周期,常用操作如下:
操作命令 | 功能说明 |
---|---|
sudo systemctl start mysql |
启动MySQL服务 |
sudo systemctl stop mysql |
停止MySQL服务 |
sudo systemctl restart mysql |
重启MySQL服务 |
sudo systemctl status mysql |
查看服务运行状态 |
sudo systemctl enable mysql |
设置开机自启 |
sudo systemctl disable mysql |
禁止开机自启 |
若服务启动失败,可通过journalctl -u mysql
查看详细日志定位问题(如端口冲突、配置错误等)。
安全配置
安装完成后,需运行安全脚本初始化安全策略:
sudo mysql_secure_installation
该脚本会引导完成以下操作:
- 设置root密码:为root用户设置强密码(至少8位,包含大小写字母、数字和特殊字符)。
- 移除匿名用户:禁止匿名登录,避免安全风险。
- 禁止root远程登录:限制root用户仅能通过本地连接(可选,若需远程管理需单独配置)。
- 移除测试数据库:删除默认的测试数据库(如
test
),防止误操作。 - 重载权限表:使配置立即生效。
安全配置后,建议通过mysql -u root -p
测试本地登录是否正常。
远程连接配置(可选)
若需从其他设备远程连接MySQL,需进行以下配置:
- 修改监听地址:编辑MySQL配置文件(Ubuntu为
/etc/mysql/mysql.conf.d/mysqld.cnf
,CentOS为/etc/my.cnf
),将bind-address
修改为0.0.0
(允许所有IP连接)或特定IP(如服务器内网IP):bind-address = 0.0.0.0
- 创建远程用户:登录MySQL后,执行以下命令创建允许远程连接的用户(如
remote_user
):CREATE USER 'remote_user'@'%' IDENTIFIED BY 'StrongPassword123!'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
- 开放防火墙端口:Linux防火墙(如
ufw
或firewalld
)需放行MySQL默认端口3306:- Ubuntu(ufw):
sudo ufw allow 3306/tcp
- CentOS(firewalld):
sudo firewall-cmd --permanent --add-port=3306/tcp && sudo firewall-cmd --reload
- Ubuntu(ufw):
完成配置后,从远程设备使用mysql -h 服务器IP -u remote_user -p
即可连接。
数据库基本操作
创建数据库与用户
CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword'; GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost'; FLUSH PRIVILEGES;
数据导入导出
- 导出数据库:使用
mysqldump
命令导出整个数据库或指定表:mysqldump -u root -p mydb > mydb_backup.sql # 导出数据库 mysqldump -u root -p mydb users > users_table.sql # 导出指定表
- 导入数据库:登录MySQL后使用
source
命令,或通过管道直接导入:mysql -u root -p mydb < mydb_backup.sql
配置文件优化
MySQL核心配置文件位于/etc/mysql/my.cnf
(Ubuntu)或/etc/my.cnf
(CentOS),常用优化参数包括:
[mysqld] port = 3306 bind-address = 0.0.0.0 max_connections = 200 # 最大连接数,根据服务器内存调整 innodb_buffer_pool_size = 1G # InnoDB缓冲池大小,建议为内存的50%-70% slow_query_log = 1 # 开启慢查询日志 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 1 # 慢查询阈值(秒)
修改配置后需重启MySQL服务生效:sudo systemctl restart mysql
。
性能监控与维护
日志管理
- 错误日志:记录MySQL启动、运行错误,默认位置
/var/log/mysql/error.log
。 - 慢查询日志:记录执行超过
long_query_time
的SQL,用于优化查询性能。 - 二进制日志:记录数据变更,用于数据恢复(开启需配置
log_bin = /var/log/mysql/mysql-bin
)。
定期备份
推荐通过crontab
设置定时任务,每天凌晨2点全量备份数据库:
0 2 * * * mysqldump -u root -p'密码' --all-databases | gzip > /backup/mysql_$(date +%Y%m%d).sql.gz
备份文件需存储到独立磁盘或远程服务器,避免数据丢失。
相关问答FAQs
Q1:Linux下MySQL无法启动,如何排查?
A:排查步骤如下:
- 检查服务状态:
systemctl status mysql
,观察是否报错。 - 查看错误日志:
tail -f /var/log/mysql/error.log
,定位错误原因(如端口3306被占用、磁盘空间不足、配置语法错误)。 - 检查配置文件:
mysql --help --verbose | grep "Default options"
找到配置文件路径,用mysqlcheck -u root -p --all-databases --check-upgrade
检查配置语法。 - 检查端口占用:
netstat -tuln | grep 3306
,若被占用则终止相关进程(kill -9 进程ID
)。 - 检查磁盘空间:
df -h
,确保MySQL数据目录(如/var/lib/mysql
)有足够空间。
Q2:如何查看MySQL的运行状态和性能指标?
A:可通过以下方式监控:
- 命令行查看:登录MySQL后执行
SHOW STATUS;
查看全局状态变量(如Threads_connected
当前连接数、Queries_per_second
每秒查询数)。 - 查看当前连接:
SHOW PROCESSLIST;
显示所有活跃连接的SQL语句和状态。 - 性能指标工具:使用
mysqladmin
命令快速获取状态,如mysqladmin -u root -p status
返回 uptime、threads、questions等核心指标。 - 慢查询分析:通过
mysqldumpslow /var/log/mysql/slow.log
分析慢查询日志,定位低效SQL。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/25416.html