MySQL作为最流行的开源关系型数据库之一,广泛应用于各种开发和生产环境。本教程将详细介绍在Linux系统上安装MySQL 8.0的全过程,包括卸载旧版本、安装新版本、基础配置和远程连接设置,特别适合Linux新手学习使用。
一、卸载旧版MySQL(如有)
在安装新版MySQL之前,强烈建议先彻底卸载系统中可能存在的旧版MySQL
1. 检查已安装的MySQL组件
rpm -qa | grep mysql
如果系统返回类似mysql-community-server-8.0.xx
的结果,说明已安装MySQL。
2. 停止MySQL服务
systemctl stop mysqld
3. 卸载MySQL及其相关组件
yum remove mysql-* -y
4. 删除残留文件和目录
rm -rf /var/lib/mysql
rm -rf /etc/my.cnf
rm -rf /etc/my.cnf.d
二、安装MySQL 8.0
1. 添加MySQL官方Yum仓库
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
2. 安装MySQL服务器
yum -y install mysql-community-server
3. 启动MySQL服务并设置开机自启
systemctl start mysqld
systemctl enable mysqld
4. 查看MySQL服务状态
systemctl status mysqld
如果看到active (running)
字样,说明MySQL已成功启动。
三、初始配置MySQL
1. 获取临时密码
MySQL 8.0安装后会生成一个临时密码,查看方法:
grep 'temporary password' /var/log/mysqld.log
输出类似:
2023-01-01T00:00:00.000000Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: AbCdEfGhIjKl
AbCdEfGhIjKl
就是你的临时密码。
2. 登录MySQL并修改密码
mysql -uroot -p
输入刚才获取的临时密码登录后,执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
注意:MySQL 8.0默认要求强密码(至少8个字符,包含大小写字母、数字和特殊字符)
3. 创建新用户(可选)
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
四、配置远程连接
1. 修改MySQL配置文件
编辑/etc/my.cnf
文件:
vi /etc/my.cnf
在[mysqld]
部分添加或修改以下行:
bind-address = 0.0.0.0
保存退出后重启MySQL服务:
systemctl restart mysqld
2. 修改root用户权限允许远程访问
USE mysql;
UPDATE user SET Host='%' WHERE User='root';
FLUSH PRIVILEGES;
3. 防火墙设置
临时关闭防火墙(不推荐生产环境)
systemctl stop firewalld
推荐:仅开放MySQL端口(3306)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
4. 测试远程连接
使用MySQL客户端工具(如MySQL Workbench、Navicat等)连接:
- 主机:你的服务器IP
- 端口:3306
- 用户名:root或你创建的用户
- 密码:你设置的密码
五、安全最佳实践
1. 创建专用管理用户(替代root远程访问)
CREATE USER 'admin'@'%' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
2. 限制访问IP范围
UPDATE user SET Host='192.168.1.%' WHERE User='root';
3. 使用SSH隧道(最安全的方式)
ssh -L 3306:localhost:3306 user@your-server-ip
然后本地连接127.0.0.1:3306
六、常见问题解决
1. 忘记root密码
-
停止MySQL服务:
systemctl stop mysqld
-
以安全模式启动MySQL:
mysqld_safe --skip-grant-tables &
-
无密码登录MySQL:
mysql -uroot
-
修改密码:
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
-
退出并重启MySQL服务
2. 密码策略问题
查看当前密码策略:
SHOW VARIABLES LIKE 'validate_password%';
临时降低密码强度要求(仅限测试环境):
SET GLOBAL validate_password.policy=LOW;
七、基本操作命令
启动/停止/重启MySQL服务
systemctl start mysqld # 启动
systemctl stop mysqld # 停止
systemctl restart mysqld # 重启
systemctl status mysqld # 查看状态
查看MySQL版本
mysql --version
总结
本教程详细介绍了在Linux系统上安装和配置MySQL 8.0的全过程,从卸载旧版本到配置远程连接,涵盖了新手可能遇到的各种问题。特别强调了安全配置的重要性,建议在生产环境中遵循安全最佳实践。
如果你在安装过程中遇到任何问题,欢迎在评论区留言讨论。如果觉得本教程有帮助,请点赞收藏支持!