哈喽各位开发者、运维小伙伴👋
MySQL是开源数据库,而Linux作为服务器主流系统,掌握MySQL的标准部署流程,既能避开各种坑,又能保证服务稳定安全。
「本文内容源自个人实操笔记,限于经验有限,如有错误欢迎指正,不胜感激」
📌 部署前必看:核心准备工作
动手前先做好基础检查,避免中途踩坑,这是部署成功的关键前提!
1. 系统环境确认
本文适配主流Linux发行版,大家按需选择对应步骤:
查看系统版本命令:
# CentOS/RHELcat /etc/redhat-release # Ubuntucat /etc/os-release
|
2. 卸载冲突组件(关键!)
多数Linux系统默认预装MariaDB(MySQL分支),会和官方MySQL冲突,必须先卸载:
# CentOS/RHEL 卸载MariaDBsystemctl stop mariadbyum remove mariadb* -y# Ubuntu 卸载MariaDBsystemctl stop mariadbapt remove mariadb* -yapt autoremove -y
|
3. 关闭防火墙/开放端口(可选)
MySQL默认端口3306,如需远程连接,务必开放端口;测试环境可临时关闭防火墙简化操作。
⚙️ CentOS/RHEL 系统部署MySQL 8.0(主流稳定版)
CentOS默认源无官方MySQL,需先配置官方YUM源,全程无复杂操作,跟着命令走即可。
步骤1:安装MySQL官方YUM源
# 下载并安装MySQL 8.0源rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el8-4.noarch.rpm # 禁用系统默认mysql模块(CentOS 8+)
dnf module disable mysql -y
|
步骤2:安装MySQL服务
# 安装MySQL服务端yum install -y mysql-community-server
|
步骤3:启动服务+开机自启
# 启动MySQLsystemctl start mysqld # 设置开机自启(服务器必备)systemctl enable mysqld # 查看服务状态,显示active (running)即为成功systemctl status mysqld
|
步骤4:初始化密码+安全配置
MySQL 8.0安装后会自动生成临时root密码,存放在日志文件中: # 提取临时密码grep 'temporary password' /var/log/mysqld.log
登录MySQL并修改密码(默认密码策略要求:大小写+数字+特殊字符,长度≥8位): # 登录MySQL,输入刚才提取的临时密码mysql -uroot -p # 修改root密码(替换为你的强密码)ALTER USER 'root'@'localhost' IDENTIFIED BY '你的强密码'; # 刷新权限FLUSH PRIVILEGES; # 退出MySQLexit;
|
步骤5:执行安全加固(必做)
MySQL自带安全脚本,一键删除匿名用户、禁止root远程空登录、删除测试库: mysql_secure_installation
按提示操作,全程回车+输入密码即可,大幅提升数据库安全性。 |
⚙️ Ubuntu 系统部署MySQL 8.0
Ubuntu操作更简洁,无需配置第三方源,直接用apt安装即可。
步骤1:更新软件源+安装MySQL
# 更新源apt update # 安装MySQL服务apt install -y mysql-server
|
步骤2:启动服务+开机自启
# 启动服务systemctl start mysql # 开机自启systemctl enable mysql # 查看状态systemctl status mysql
|
步骤3:配置root密码(Ubuntu特殊点)
Ubuntu默认采用socket认证,root无需密码登录,需手动修改为密码认证:
# 免密登录MySQLsudo mysql # 切换mysql库USE mysql; # 修改认证方式+设置密码ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的强密码'; # 刷新权限FLUSH PRIVILEGES; # 退出exit;
|
步骤4:安全加固
mysql_secure_installation
|
🌐 开启MySQL远程连接(可选,项目必备)
默认MySQL仅允许本地登录,如需Navicat、DBeaver等工具远程连接,按以下操作:
1. 修改MySQL配置文件
# CentOS/RHEL 配置文件路径vim /etc/my.cnf # Ubuntu 配置文件路径vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到bind-address,注释掉或改为0.0.0.0,允许所有IP访问: # 注释该行# bind-address = 127.0.0.1
|
2. 授权远程访问权限
# 登录MySQLmysql -uroot -p # 授权root远程访问(%代表所有IP,可替换为固定IP)GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION; # 刷新权限FLUSH PRIVILEGES; # 退出exit;
|
3. 开放3306端口
# CentOS/RHELfirewall-cmd --zone=public --add-port=3306/tcp --permanentfirewall-cmd --reload # Ubuntuufw allow 3306/tcpufw reload
|
🚫 常见坑+避坑指南
1. 密码强度不够报错:MySQL 8.0密码策略严格,必须包含大小写、数字、特殊字符,临时降低策略可执行:set global validate_password.policy=0; 2. 远程连接失败:检查防火墙是否开放3306端口、配置文件bind-address是否修改、远程权限是否授权 3. 服务启动失败:查看日志排查错误 cat /var/log/mysqld.log,大概率是权限或配置文件语法问题 4. 中文乱码:在my.cnf中添加utf8mb4编码配置,彻底解决中文和emoji乱码 |
🧩 运维常用命令(收藏备用)
# 启动MySQLsystemctl start mysqld # 停止MySQLsystemctl stop mysqld # 重启MySQLsystemctl restart mysqld # 查看MySQL版本mysql -V # 登录MySQLmysql -uroot -p
|