Alpine安装MySQL

5 天前(已编辑)
/
15

Alpine安装MySQL

前言

这学期学习MySQL,老师教的是安装Windows版,可是Windows安装MySQL太麻烦了,这时我想用Linux会不会简单点呢?就几条命令就能安装完成,其他课有用到VMware正好有运行 Linux 的环境。于是就有了这篇教程(bushi
首先要安装一个Linux系统,可是用Linux只是为了安装MySQL用来学习,使用CentOS、Ubuntu这类发行版就太浪费了,有没有精简点的系统呢,这时我想到了 Alpine Linux,想必玩Docker的对这个系统并不陌生吧,Alpine是一个轻量级 Linux 发行版,安装完成仅100多 MB,适合用来做路由器、防火墙、VPNs、VoIP 盒子以及服务器的操作系统,也常用于Docker底包。这么精简的系统用来安装 MySQL 用于学习再适合不过了。

下载镜像

先到Alpine 官网下载ISO镜像,选择Virtual x86_64。

安装 Alpine

默认情况下,Alpine会为EFI启动分区分配 300MB,再分配部分空间给 swap,如此操作根目录下可用空间就很少了。通过手动分区和安装的操作可以缩减EFI分区同时去掉 swap 分区,以最大化利用磁盘空间。
VMware安装步骤就不写了,相信大家都会了(不会的去复习 Linux 课程(狗头保命))
VMware建议使用自定义NAT网络,可以连接网络的同时方便管理虚拟机 IP。

# 通过正常安装流程进行联网、镜像源设置,随后终止安装流程
setup-alpine
# 安装分区工具
apk add parted e2fsprogs dosfstools
# 进行分区
parted -sa optimal /dev/sda mklabel gpt             # GPT 分区表
parted -sa optimal /dev/sda mkpart ESP fat32 1MiB 51MiB  # EFI 分区 50MB
parted -sa optimal /dev/sda set 1 boot             # EFI 标志
parted -sa optimal /dev/sda mkpart primary ext4 51MiB 100% # 根分区
mkfs.vfat -F32 -n EFI /dev/sda1     # EFI 分区
mkfs.ext4 -L root /dev/sda2         # 根分区
# 重启
reboot
# 挂载磁盘,注意先后及新建文件夹
mount /dev/sda2 /mnt
mkdir -p /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi
# 通过正常安装流程进行所有设置,到选择磁盘后终止
setup-alpine
# 安装
setup-disk /mnt
# 安装完成后确认/boot/efi、/boot/grub及/etc/fstab
tree /mnt/boot/efi

/mnt/boot/efi
└── EFI
    ├── alpine
    │   └── grubx64.efi
    └── boot
        └── bootx64.efi

cat /mnt/boot/grub/grub.cfg

cat /mnt/etc/fstab

# 如果缺少文件或文件为空手动安装UEFI引导
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
chroot /mnt /bin/sh
apk add grub-efi efibootmgr
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=alpine --recheck --removable
grub-mkconfig -o /boot/grub/grub.cfg

安装后磁盘情况

localhost:~# df -h
Filesystem                Size      Used Available Use% Mounted on
devtmpfs                 10.0M         0     10.0M   0% /dev
shm                     216.8M         0    216.8M   0% /dev/shm
/dev/sda2               938.3M    100.2M    773.6M  11% /
tmpfs                    86.7M    116.0K     86.6M   0% /run
efivarfs                256.0K     53.1K    197.9K  21% /sys/firmware/efi/efivars
/dev/sda1                49.2M    274.0K     48.9M   1% /boot/efi
tmpfs                   216.8M         0    216.8M   0% /tmp

安装 MySQL

在Alpine Linux上安装MySQL(或更常用的 MariaDB,它是 MySQL 的兼容分支)相对轻量,但需要注意一些细节,因为Alpine使用apk包管理器,库和路径与Ubuntu/Debian有差异。

# 更新源
apk update
apk upgrade
# 安装 MariaDB(MySQL 兼容)
# Alpine默认没有Oracle MySQL包,但MariaDB完全兼容MySQL客户端/服务器。
apk add mariadb mariadb-client
# 初始化数据库
# MariaDB安装后需要初始化数据目录:
mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
# 启动 MariaDB 服务
rc-service mariadb start
# 设置开机自启:
rc-update add mariadb
# 设置root密码并安全配置
mysql_secure_installation
# 按照提示操作:
# 设置root密码
# 删除匿名用户
# 禁止root远程登录(可根据需求允许)这里需要就不禁止了
# 删除测试数据库
# 刷新权限
# 测试连接
mysql -u root -p
# 输入密码后应该能进入MySQL/MariaDB命令行。
# 允许远程连接
# 编辑配置文件
vi /etc/my.cnf.d/mariadb-server.cnf
# 在[mysqld]下添加:
# this is only for the mysqld standalone daemon
[mysqld]
skip-networking = 0
bind-address = 0.0.0.0
port = 3306
# 修改[galera]下的内容
# Allow server to accept connections on all interfaces.
bind-address=0.0.0.0
# 然后重启 MariaDB:
rc-service mariadb restart
# 创建远程用户:
CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

安装MySQL后磁盘情况

localhost:~# df -h
Filesystem                Size      Used Available Use% Mounted on
devtmpfs                 10.0M         0     10.0M   0% /dev
shm                     216.8M         0    216.8M   0% /dev/shm
/dev/sda2               938.3M    539.1M    334.6M  62% /
tmpfs                    86.7M    132.0K     86.6M   0% /run
efivarfs                256.0K     53.1K    197.9K  21% /sys/firmware/efi/efivars
/dev/sda1                49.2M    274.0K     48.9M   1% /boot/efi
tmpfs                   216.8M         0    216.8M   0% /tmp

可以看到 MySQL 仅占用了 400 多 MB,还是比较轻量,系统加软件占用和在 Windows 上安装差不多。

远程连接 MySQL

这里使用Navicat Premium Lite

VMware 镜像分享

下载地址:https://wwjx.lanzout.com/b02sg1uxzc 密码:0000
Alpine user:root
password:alpine
MySQL user:root
password:MySQL

使用社交账号登录

  • Loading...
  • Loading...
  • Loading...
  • Loading...
  • Loading...