MySQL 8.0.46 在线安装操作步骤
·
MySQL 8.0.46 在线安装操作步骤
本文章,主要说明了Rocky Linux 9.6系统,在具备互联网连接的情况下,在线安装MySQL 8.0.46的主要步骤和可能遇到的问题。按步骤安装完毕后,MySQL数据库配置为大小写不敏感,允许数据库的root用户远程登录数据库。
适用系统:Rocky Linux 9.6
MySQL 版本:8.0.46
目录
- 环境准备
- 安装 MySQL 8.0.46
- 配置 MySQL
- 启动 MySQL 并获取临时密码
- 修改 root 密码
- 配置大小写不敏感
- 配置字符集与存储引擎
- 配置远程访问
- 关闭防火墙
- 关闭 SELinux
- 验证清单
1. 环境准备
1.1 检查系统版本
cat /etc/os-release
预期输出包含:Rocky Linux 9.6
1.2 更新系统包
dnf update -y
2. 安装 MySQL 8.0.46
2.1 下载 MySQL 8.0.46 RPM 包
cd /tmp
wget https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
2.2 安装 MySQL 仓库
rpm -ivh mysql80-community-release-el9-1.noarch.rpm
2.3 安装 MySQL Server
dnf install -y mysql-server
2.4 验证安装版本
mysqld --version
预期输出:mysqld Ver 8.0.46 for Linux on x86_64
3. 配置 MySQL
3.1 编辑配置文件
vi /etc/my.cnf
3.2 添加以下配置
在 [mysqld] 段落下添加:
[mysqld]
# 大小写不敏感(必须在初始化前配置)
lower_case_table_names=1
# 字符集配置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 默认存储引擎
default-storage-engine=INNODB
# 绑定地址(允许远程连接)
bind-address=0.0.0.0
⚠️ 重要:
lower_case_table_names=1必须在 MySQL 初始化之前配置,否则需要重新初始化数据目录。
4. 启动 MySQL 并获取临时密码
4.1 启动 MySQL 服务
systemctl start mysqld
4.2 设置开机自启
systemctl enable mysqld
4.3 查看服务状态
systemctl status mysqld --no-pager | cat
4.4 获取临时密码
grep 'temporary password' /var/log/mysqld.log
输出示例:
[Note] A temporary password is generated for root@localhost: o.t+-du2M1AB
📝 记录此临时密码,下一步需要使用。
5. 修改 root 密码
5.1 使用临时密码登录 MySQL
mysql -uroot -p
输入上一步获取的临时密码。
5.2 修改 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@2026!';
FLUSH PRIVILEGES;
⚠️ 密码要求:至少 8 位,包含大小写字母、数字和特殊字符。
5.3 验证新密码
mysql -uroot -p'Root@2026!' -e "SELECT 'Password changed successfully!' AS status;"
6. 配置大小写不敏感
6.1 确认配置文件
grep 'lower_case_table_names' /etc/my.cnf
预期输出:lower_case_table_names=1
6.2 验证是否生效
mysql -uroot -p'Root@2026!' -e "SHOW VARIABLES LIKE 'lower_case_table_names';"
预期输出:
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_table_names | 1 |
+------------------------+-------+
7. 配置字符集与存储引擎
7.1 验证字符集配置
mysql -uroot -p'Root@2026!' -e "SHOW VARIABLES LIKE 'character_set_server'; SHOW VARIABLES LIKE 'collation_server';"
预期输出:
+----------------------+--------------------+
| Variable_name | Value |
+----------------------+--------------------+
| character_set_server | utf8mb4 |
| collation_server | utf8mb4_unicode_ci |
+----------------------+--------------------+
7.2 验证存储引擎
mysql -uroot -p'Root@2026!' -e "SHOW VARIABLES LIKE 'default_storage_engine';"
预期输出:
+------------------------+--------+
| Variable_name | Value |
+------------------------+--------+
| default_storage_engine | InnoDB |
+------------------------+--------+
8. 配置远程访问
8.1 创建远程访问用户
mysql -uroot -p'Root@2026!' << 'SQLEOF'
CREATE USER 'root'@'%' IDENTIFIED BY 'Root@2026!';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
SQLEOF
8.2 验证远程用户
mysql -uroot -p'Root@2026!' -e "SELECT user, host FROM mysql.user WHERE user='root';"
预期输出:
+------+-----------+
| user | host |
+------+-----------+
| root | % |
| root | localhost |
+------+-----------+
8.3 验证远程用户权限
mysql -uroot -p'Root@2026!' -e "SHOW GRANTS FOR 'root'@'%';"
预期输出包含:GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION
9. 关闭防火墙
9.1 停止 firewalld
systemctl stop firewalld
9.2 禁用开机自启
systemctl disable firewalld
9.3 验证防火墙状态
systemctl status firewalld --no-pager | cat
预期输出:Active: inactive (dead)
⚠️ 安全提醒:生产环境建议仅开放 3306 端口,而非完全关闭防火墙:
systemctl start firewalld systemctl enable firewalld firewall-cmd --add-port=3306/tcp --permanent firewall-cmd --reload
10. 关闭 SELinux
10.1 查看当前状态
getenforce
10.2 永久关闭 SELinux
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
sed -i 's/^SELINUX=permissive/SELINUX=disabled/' /etc/selinux/config
10.3 立即生效(无需重启)
setenforce 0
10.4 验证配置
getenforce
grep ^SELINUX= /etc/selinux/config
预期输出:
Permissive
SELINUX=disabled
📝 当前运行模式为
Permissive(仅记录不拦截),重启后将变为Disabled(完全关闭)。
11. 验证清单
完成所有步骤后,请逐项验证:
| 序号 | 验证项 | 命令 | 预期结果 |
|---|---|---|---|
| 1 | MySQL 服务状态 | systemctl status mysqld |
active (running) |
| 2 | 开机自启 | systemctl is-enabled mysqld |
enabled |
| 3 | 版本号 | mysqld --version |
8.0.46 |
| 4 | 本地登录 | mysql -uroot -p'Root@2026!' -e "SELECT 1;" |
成功 |
| 5 | 大小写不敏感 | SHOW VARIABLES LIKE 'lower_case_table_names'; |
1 |
| 6 | 字符集 | SHOW VARIABLES LIKE 'character_set_server'; |
utf8mb4 |
| 7 | 存储引擎 | SHOW VARIABLES LIKE 'default_storage_engine'; |
InnoDB |
| 8 | 远程用户 | SELECT user, host FROM mysql.user WHERE user='root'; |
root@% 存在 |
| 9 | 防火墙 | systemctl status firewalld |
inactive |
| 10 | SELinux | getenforce |
Permissive 或 Disabled |
远程连接测试
从其他机器执行:
mysql -h <服务器IP地址> -uroot -p'Root@2026!'
附录:关键信息速查
| 项目 | 值 |
|---|---|
| MySQL 版本 | 8.0.46 |
| 配置文件 | /etc/my.cnf |
| 数据目录 | /var/lib/mysql |
| 日志文件 | /var/log/mysqld.log |
| root 密码 | Root@2026! |
| 远程用户 | root@% |
| 字符集 | utf8mb4 |
| 排序规则 | utf8mb4_unicode_ci |
| 存储引擎 | InnoDB |
| 大小写 | 不敏感 (lower_case_table_names=1) |
| 防火墙 | 已关闭 |
| SELinux | 已关闭 |
附录:常见问题
Q1: 忘记 root 密码怎么办?
# 1. 停止 MySQL
systemctl stop mysqld
# 2. 跳过权限验证启动
mysqld --skip-grant-tables --user=mysql &
# 3. 无密码登录并修改密码
mysql -uroot
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
# 4. 重启 MySQL
systemctl restart mysqld
Q2: lower_case_table_names 修改后不生效?
该参数必须在 MySQL 初始化之前配置。如果已经初始化,需要:
systemctl stop mysqld
rm -rf /var/lib/mysql/*
mysqld --initialize --user=mysql --lower-case-table-names=1
systemctl start mysqld
Q3: 远程连接被拒绝?
检查以下项目:
- 防火墙是否已关闭或开放 3306 端口
- SELinux 是否已关闭
bind-address是否为0.0.0.0或*- 远程用户
root@%是否已创建
更多推荐




所有评论(0)