OpenWrt环境下安装与配置MySQL

更新时间:2024-05-04 03:18:35   人气:2585
在 OpenWrt 环境下,由于其资源有限的特性,默认并不预装 MySQL 数据库。然而,在某些应用场景中(例如搭建轻量级的家庭服务器或 IoT 设备),我们可能需要在这类环境中运行数据库服务以实现数据存储和管理功能。下面将详细介绍如何在 OpenWrt 上手动编译并安装、配置 MySQL。

**步骤一:准备环境**

确保你的 OpenWrt 已经更新至最新版本,并拥有足够的磁盘空间来存放源码及后续构建产物。通过 SSH 登录到设备后,请首先使用以下命令进行必要的软件包升级:

bash

opkg update && opkg upgrade


**步骤二:下载 MySQL 源代码**

找到适用于你当前 OpenWrt 版本兼容且合适的 MySQL 或 MariaDB 的源代码压缩包(这里假设选择的是MariaDB)。可以通过访问官方仓库或者直接从 GitHub 下载对应 ARM 架构或其他架构的支持版:

bash

wget https://downloads.mariadb.org/f/mariadb-10.5.8/source/mariadb-10.5.8.tar.gz # 请替换为实际适合您的版本号链接
tar -xvf mariadb-10.5.8.tar.gz
cd mariadb-10.5.8/


**步骤三:交叉编译 MySQL/MariaDB**

为了能在嵌入式系统上执行,我们需要对 MySQL 进行交叉编译。首先要设置 CROSS_COMPILE 变量指向目标平台工具链路径,然后按照常规流程configure、make以及install:

bash

export PATH=$PATH:/path/to/openwrt/staging_dir/toolchain-arm_cortex-a9+/gcc-linaro-*-linux-gnueabi/bin/ # 根据实际情况修改toolchain路径

./scripts/mysql_config.pl --cross-compiling --host=arm-openwrt-linux-uclibcgnueabi

CC=/path/to/arm_openwrt_gcc ./configure \
--prefix=/usr/local/mysql \
--without-server-id-prefix \
--enable-assembler \
--with-unixODBC=no \
--disable-shared \
--target-os=linux \
--extra-cflags=-fPIC

make -j4 && make install


**步骤四:创建 MySQL 配置文件与初始化数据库**

把相关目录结构复制到位并在 /etc 目录下建立 my.cnf 文件用于保存MySQL的基本配置项;接着启动 mysqld 初始化数据库生成 root 用户密码等操作:

bash

mkdir -p /var/lib/mysql/{mysql,performance_schema,test}
cp support-files/my-medium.cnf /etc/my.cnf

/usr/local/mysql/scripts/mysql_install_db --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql --datadir=/var/lib/mysql

# 创建一个无密初始登录脚本来设定root用户密码
echo "UPDATE mysql.user SET Password=PASSWORD('your_password') WHERE User='root'; FLUSH PRIVILEGES;" > ~/init.sql

/usr/local/mysql/support-files/mysql.server start & sleep 3s

mysqladmin -u root password 'new_root_password' <~/init.sql

killall mysqld_safe # 关闭临时开启的服务进程


最后一步是编写开机自启脚本并将它放置于 `/etc/init.d` 并赋予可执行权限,以便每次重启路由器时自动启动 MySQL 服务。

这样就完成了在 OpenWrt 中部署 MySQL 的全过程,需要注意的是这个过程可能会因具体硬件性能不同而耗时较长,同时也需密切关注内存占用情况以免影响其他系统的正常运作。另外,在生产场景应用前务必做好详尽的压力测试及相关安全策略调整工作。