尤其是MySQL 8.0版本,带来了性能、安全性和管理功能上的诸多提升
本文旨在为你提供一份详尽的Linux环境下MySQL 8.0安装指南,不仅涵盖基础安装步骤,还包含安全配置、性能优化及常见问题解决策略,确保你能顺利完成安装并高效使用MySQL 8.0
一、安装前准备 1. 环境检查与配置 - 系统版本:推荐使用CentOS 7+或Ubuntu18.04+系统,确保系统兼容性
- 磁盘空间:MySQL 8.0默认需要至少500MB空间,建议预留2G以上,以应对未来数据增长和性能需求
- 网络连通性:确保服务器能够访问外网,以便下载MySQL安装包和相关依赖
- 关闭SELinux:SELinux(Security-Enhanced Linux)可能会干扰MySQL的正常运行,建议临时或永久关闭
临时关闭命令:`setenforce 0`;永久关闭需修改`/etc/selinux/config`文件,将`SELINUX`设置为`disabled`
2. 卸载旧版本数据库 如果系统中已安装MariaDB或旧版本的MySQL,需要先进行卸载,以避免版本冲突
卸载命令示例: yum remove mariadbmysql -y rm -rf /var/lib/mysql/ rm -rf /etc/my.cnf 二、安装MySQL 8.0 1. 配置官方仓库 使用官方仓库可以确保获取到最新、最稳定的MySQL版本
首先,下载并安装MySQL 8.0的官方仓库RPM包: wget https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm rpm -Uvh mysql80-community-release-el7-6.noarch.rpm 如果遇到“无法解析主机”的错误,请检查网络连接;若提示密钥过期,则导入GPG密钥: rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 2. 安装MySQL服务器 使用`yum`命令安装MySQL社区版服务器: yum install mysql-community-server -y 安装过程可能需要几分钟,具体时间取决于网络速度和服务器性能
安装完成后,MySQL服务器不会自动启动,需要手动启动并设置为开机自启: systemctl start mysqld systemctl enable mysqld 3. 获取初始密码 MySQL 8.0安装完成后,会自动生成一个临时密码
查看临时密码的命令如下: grep temporary password /var/log/mysqld.log 输出示例: A temporary password is generated for root@localhost: Abcdefg123! 请务必在30秒内复制并保存该密码,因为稍后需要用到
三、安全配置与初始化 1. 修改root密码 使用临时密码登录MySQL: mysql -uroot -p 然后立即修改root密码
注意,MySQL 8.0的密码策略非常严格,密码必须包含大小写字母、数字和特殊字符,且长度至少为8位: ALTER USER root@localhost IDENTIFIED BY MyNewPass123!; 2. 运行安全脚本 MySQL提供了一个安全脚本`mysql_secure_installation`,可以帮助你进行一系列安全配置,如删除匿名用户、禁止远程root登录、删除测试数据库等
执行该脚本时,请根据提示进行相应的选择
3. 开启远程访问 默认情况下,MySQL只允许本地访问
如果需要远程访问,需要创建远程用户并授予相应权限: CREATE USER devuser@% IDENTIFIED BY StrongPass123!; GRANT ALL PRIVILEGES ON. TO devuser@%; FLUSH PRIVILEGES; 同时,需要修改MySQL配置文件`/etc/my.cnf`,将`bind-address`设置为`0.0.0.0`以允许所有IP地址连接: 【mysqld】 bind-address = 0.0.0.0 最后,别忘了在防火墙中开放MySQL的默认端口3306: firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload 四、性能优化与调优 1. 修改配置文件 MySQL的性能很大程度上取决于其配置文件的设置
在`/etc/my.cnf`文件中,可以根据服务器的硬件配置进行相应的调整
以下是一些推荐配置: 【mysqld】 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci default_authentication_plugin=mysql_native_password 兼容旧客户端 innodb_buffer_pool_size=1G 根据内存调整,推荐设置为物理内存的70% max_connections=500 thread_cache_size=50 修改配置后,需要重启MySQL服务以使更改生效: systemctl restart mysqld 2. 定期维护 为了保持MySQL的性能和稳定性,建议定期进行数据库维护,如使用`mysqlcheck`工具检查表的一致性、优化表和更新统计信息等
五、常见问题解决 1. 启动失败 如果遇到MySQL启动失败的情况,首先检查`/var/log/mysqld.log`日志文件以获取错误信息
常见问题包括磁盘空间不足、权限问题、端口冲突等
- 磁盘空间不足:使用`df -h`检查磁盘空间,并确保有足够的剩余空间
- 权限问题:确保MySQL数据目录(通常为`/var/lib/mysql`)的拥有者为`mysql`用户
- 端口冲突:使用`netstat -tulnp | grep 3306`检查是否有其他服务占用了3306端口
2. 密码策略太严格 MySQL 8.0的密码策略非常严格,有时可能因密码复杂度不够而导致设置失败
如果需要在测试环境中降低密码复杂度,可以执行以下SQL命令: SET GLOBALvalidate_password.policy=LOW; SET GLOBALvalidate_password.length=4; 但请注意,这种做法不推荐在生产环境中使用
3. 客户端连接报加密错误 如果客户端在连接MySQL时报告加密错误,可能是因为MySQL的默认认证插件与客