1.查看版本
cat /etc/os-release

2.环境准备
# 确认系统架构
uname -m
# 输出应为:aarch64

# 查看系统版本
cat /etc/kylin-release

# 查看 glibc 版本(MySQL 8.0 要求 glibc 2.17+)
ldd --version

# 安装必要依赖
yum install -y libaio numactl-libs ncurses-compat-libs tar xz wget

或者 apt update && apt install -y libaio1 libnuma1 libncurses5 tar xz-utils wget

3.下载 ARM 版本 MySQL
# 创建安装目录
mkdir -p /usr/local/src/mysql
cd /usr/local/src/mysql

# 下载 MySQL 8.0 ARM64 二进制包(推荐 8.0.42 或更新版本)
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.42-linux-glibc2.28-aarch64.tar.xz

# 或使用国内镜像加速
# wget https://mirrors.tuna.tsinghua.edu.cn/mysql/downloads/MySQL-8.0/mysql-8.0.42-linux-glibc2.28-aarch64.tar.xz

# 解压到 /usr/local/mysql
mkdir -p /usr/local/mysql
tar -xvf mysql-8.0.42-linux-glibc2.28-aarch64.tar.xz -C /usr/local/mysql --strip-components=1

4.创建用户和授权
# 创建 mysql 用户组和用户(如果已存在则跳过)
groupadd mysql 2>/dev/null || true
useradd -r -g mysql -s /bin/false mysql 2>/dev/null || true

# 创建必要目录
cd /usr/local/mysql
mkdir -p data log tmp run

# 授权目录
chown -R mysql:mysql /usr/local/mysql
chmod -R 755 /usr/local/mysql

5.配置环境变量
# 编辑 /etc/profile
cat >> /etc/profile << 'EOF'

# MySQL Environment
export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH
EOF

# 立即生效
source /etc/profile

# 验证
which mysql
# 应输出:/usr/local/mysql/bin/mysql

6.创建配置文件  /etc/my.cnf 
cat > /etc/my.cnf << 'EOF'
[mysqld]
# 基础配置
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
socket = /tmp/mysql.sock
pid-file = /tmp/mysql.pid        # 改用 /tmp 目录,避免权限问题
port = 3306

# 日志配置
log-error = /usr/local/mysql/log/error.log

# 字符集
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

# 存储引擎
default-storage-engine = INNODB

# 修复:使用新的 redo log 配置(替代废弃参数)
# 删除旧的 innodb_log_file_size 和 innodb_log_files_in_group
innodb_redo_log_capacity = 134217728

# 修复:使用新的认证策略(替代废弃参数)
authentication_policy = mysql_native_password

# 嵌入式系统优化
innodb_buffer_pool_size = 128M
max_connections = 50
lower_case_table_names = 1

[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4
EOF

# 授权配置文件
chown mysql:mysql /etc/my.cnf
chmod 644 /etc/my.cnf
# 创建必要的目录并授权
mkdir -p /usr/local/mysql/log
chown -R mysql:mysql /usr/local/mysql
chmod 755 /usr/local/mysql

# 特别确保数据目录权限正确
chown mysql:mysql /usr/local/mysql/data
chmod 750 /usr/local/mysql/data

7.配置系统服务启动
# 1. 先强制停止所有 MySQL 进程
pkill -9 mysqld
sleep 2

# 2. 清理残留
rm -f /tmp/mysql.pid /tmp/mysql.sock*

# 3. 重新创建 systemd 服务文件(关键修复)
cat > /etc/systemd/system/mysql.service << 'EOF'
[Unit]
Description=MySQL Server
After=network.target

[Install]
WantedBy=multi-user.target

[Service]
# 使用 simple 类型,让 systemd 直接跟踪主进程
Type=simple
User=mysql
Group=mysql

# 不使用 --daemonize,让 MySQL 在前台运行,systemd 才能正确跟踪
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf

# 重启策略
Restart=on-failure
RestartSec=3

# 资源限制(嵌入式系统建议)
LimitNOFILE=65535
EOF

# 4. 重新加载并启动
systemctl daemon-reload
systemctl start mysql

# 5. 检查状态
systemctl status mysql

8.初始化数据库
# 初始化(生成临时密码)
cd /usr/local/mysql
./bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/data

# 查看临时密码(保存好!)
grep 'temporary password' /usr/local/mysql/log/error.log
# 输出示例:2024-01-15T06:25:00.123456Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Abc9#xyz!def

9.修改密码
# 登录 MySQL(使用初始化时的临时密码)
mysql -uroot -p
# 输入临时密码

# 修改 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword123!';

# 创建远程访问用户
CREATE USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

# 或创建专用远程用户(更安全)
CREATE USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY 'YourStrongPassword';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;
EXIT;
 

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐