CentOS 7系统安装MySQL 8.0数据库指南
环境准备与依赖处理
系统要求: CentOS 7.x (x86_64架构),内存≥2GB,磁盘≥20GB,root权限,网络连通
关键注意事项:
- 移除预装MariaDB避免冲突
- 禁止手动创建/var/lib/mysql目录
- 初始密码包含特殊字符需完整复制
- 生产环境禁用弱密码与root远程访问
移除MariaDB组件
# 检测已安装组件
rpm -qa | grep mariadb
# 卸载相关软件包
systemctl stop mariadb
systemctl disable mariadb
yum erase -y mariadb*
# 清理残留配置
rm -rf /var/lib/mysql /etc/my.cnf*
配置MySQL官方存储库
# 添加MySQL仓库
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
# 验证仓库状态
yum repolist enabled | grep mysql
# 更新缓存
yum clean metadata
yum makecache
安装数据库服务端
# 安装核心组件
yum install -y mysql-community-server
服务管理配置
# 启动数据库服务
systemctl start mysqld
# 设置开机自启
systemctl enable mysqld
systemctl daemon-reload
# 验证服务状态
systemctl status mysqld
初始安全设置
# 获取临时密码
grep 'temporary password' /var/log/mysqld.log
# 登录数据库
mysql -u root -p
# 修改管理员密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'SecurePass123!';
FLUSH PRIVILEGES;
远程访问配置
# 创建远程访问账号
CREATE USER 'admin'@'%' IDENTIFIED BY 'RemotePass456!';
GRANT ALL ON *.* TO 'admin'@'%';
FLUSH PRIVILEGES;
防火墙策略调整
# 开放数据库端口
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
firewall-cmd --list-ports
SELinux策略配置
# 临时禁用
setenforce 0
# 永久禁用
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 或添加端口例外
semanage port -a -t mysqld_port_t -p tcp 3306
性能参数优化
# 备份原配置
cp /etc/my.cnf /etc/my.cnf.backup
# 编辑配置文件
vi /etc/my.cnf
# 添加优化参数
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=1000
innodb_buffer_pool_size=1G
innodb_log_file_size=256M
lower_case_table_names=1
# 重启生效
systemctl restart mysqld
安全增强设置
mysql_secure_installation
运维管理命令
# 服务控制
systemctl stop mysqld
systemctl restart mysqld
# 数据库操作
mysql -u admin -p
SELECT VERSION();
SHOW VARIABLES LIKE 'port';
故障排除指南
服务启动失败:
chown -R mysql:mysql /var/lib/mysql
rm -rf /var/lib/mysql/*
systemctl restart mysqld
认证问题处理:
systemctl stop mysqld
mysqld_safe --skip-grant-tables &
mysql -u root
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass789!';
完整卸载步骤
systemctl stop mysqld
yum remove -y mysql-community*
rm -rf /var/lib/mysql /var/log/mysqld.log /etc/my.cnf*
userdel mysql
groupdel mysql
yum autoremove -y