文章目录
兄弟们!今天要给大家分享的是Linux环境下安装MySQL 8.0的完整攻略(绝对保姆级教程)。别小看这个安装过程,我当初可是踩了无数坑(说多了都是泪),特别是新版本的那些隐藏配置,简直让人抓狂!准备好了吗?咱们开整!
🛠️ 环境准备(超级重要)
先报下我的实验环境:
- 系统:CentOS 7.6(其他发行版也适用)
- 内存:建议2G以上
- 磁盘:20G可用空间
(注意!!!)MySQL 8.0对系统要求比旧版本高很多,特别是内存不足会导致安装失败。我之前在1G内存的机器上试了三次都挂了,血的教训!
📦 安装步骤(一步步跟着走)
第一步:卸载残留组件
很多同学安装失败都是因为旧版本没删干净!运行这串命令:
sudo yum remove mysql* mariadb* -y
sudo rm -rf /var/lib/mysql/
sudo rm -rf /etc/my.cnf
(重要提醒)如果之前装过MySQL,一定要执行这个清理步骤!我就遇到过两次因为残留配置导致启动失败的情况
第二步:配置官方仓库
直接使用yum安装可能版本太旧,咱们直接上官方源:
sudo rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-6.noarch.rpm
第三步:开始安装
激动人心的时刻到了!执行:
sudo yum install mysql-community-server -y
这个环节可能会卡在下载进度,如果网速慢可以喝杯咖啡等等(别问我怎么知道的)
第四步:启动服务
安装完成后启动服务:
sudo systemctl start mysqld
sudo systemctl enable mysqld
(关键点)第一次启动会自动生成临时密码,必须马上记下来!
第五步:获取初始密码
查看生成的随机密码:
sudo grep 'temporary password' /var/log/mysqld.log
输出类似这样:
2023-07-20T03:25:01.234567Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Abcdefg123!
最后的Abcdefg123!
就是你的初始密码(赶紧复制保存!)
🔐 安全配置(必做步骤)
登录MySQL:
mysql -uroot -p
输入刚才的临时密码
进来后立即修改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass123!';
(注意!!!)MySQL 8.0的密码策略超严格,必须包含大小写字母+数字+特殊符号,长度至少8位。我之前设了简单密码被拒绝五次…
⚙️ 常用配置调优
修改配置文件:
sudo vim /etc/my.cnf
推荐添加这些配置:
[mysqld]
default-authentication-plugin=mysql_native_password # 兼容旧版本连接
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
max_connections=1000
innodb_buffer_pool_size=1G # 根据内存调整
改完配置记得重启服务:
sudo systemctl restart mysqld
💻 远程连接配置(开发必备)
默认只能本地连接,要开远程访问:
CREATE USER 'developer'@'%' IDENTIFIED BY 'StrongPass123!';
GRANT ALL PRIVILEGES ON *.* TO 'developer'@'%';
FLUSH PRIVILEGES;
(安全警告)生产环境不建议开%访问,最好指定IP段!
🚨 常见问题排雷
问题1:启动失败报错
如果遇到Failed to start mysqld.service
,检查:
- 磁盘空间是否足够
- 查看/var/log/mysqld.log具体错误
- SELinux是否关闭(临时关闭:setenforce 0)
问题2:密码策略太严格
想降低密码复杂度可以(不建议生产环境使用):
SET GLOBAL validate_password.policy=LOW;
SET GLOBAL validate_password.length=4;
问题3:客户端连接报加密错误
在my.cnf添加:
default_authentication_plugin=mysql_native_password
🎯 终极验证
最后来个全面检查:
mysql -uroot -p -e "STATUS;" # 查看运行状态
sudo systemctl status mysqld # 检查服务状态
netstat -antp | grep 3306 # 确认端口监听
(大功告成)现在你的MySQL 8.0应该已经正常运行了!如果还有问题,欢迎评论区留言,看到必回!顺便求个三连,创作不易啊各位~