Linux aarch64架构中使用docker安装mysql8

1、遇到问题:

官网下载mysql包,安装完成后,启动mysql一直显示-bash: ./mysqld: 无法执行二进制文件。

网上找了各种资料,但是都没有作用,怀疑自己操作姿势不正确,以为是自己包下错了(其实也是包不对),重新下载了不同的各种包,换了各种安装方法,发现仍旧启动不了。

无意间发现了一篇友友在aarch64架构下安装mysql,他提到了一嘴说这个架构下目前mysql官网上所有的包都是不能直接用滴,唯一的解决方法就是使用docker。

这我不得赶紧查看一下我的Linux架构。

这一下找到了问题所在,好吧,那就上docker吧,还能咋滴。

2、在服务器A上安装docker
yum -y install dockerservice docker start
3、下载镜像到服务器A
docker pull arm64v8/mysql
4、将镜像下载到服务器目录
docker save -o mysql.tar arm64v8/mysql:latest
5、启动mysql容器
docker run --name docker-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d arm64v8/mysql:latest --lower-case-table-names=1 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
6、进入容器
docker exec -it docker-mysql /bin/bash
7、登陆mysql
mysql -uroot -p#密码是刚刚设置的123456
8、修改密码和权限
mysql> use mysql;mysql> delete from user where user='root' and host='localhost';mysql> alter user 'root'@'%' identified by '新密码';mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';mysql> flush privileges;
9、补充:docker操作
  • 操作镜像命令

    docker images #镜像列表docker rmi 镜像id #删除镜像docker rm 容器id#删除容器
  • 容器状态

    docker ps -a
  • 操作容器

    docker container start #容器id前3位docker container stop #容器id前3位 docker container rm #容器id前3位
  • 备份

    #备份docker exec -it 容器id mysqldump--all-databases -uroot -p123456 >/root/back.sql#恢复mysql > source /databak/data_center.bak
  • 将linux系统下文件复制到容器目标目录:

    docker cp /data/download/data_center.bak 容器id:/databak/
  • ​ 启动容器

    #启动容器# -d 后台运行docker run -d -it --name 容器别名 -p 主机端口:容器端口容器名称#-v 主机的目录 /data 映射到容器的 /data。docker run -p 80:80 -v /data:/data -d nginx:latest#进入容器docker attach 容器名称/id#如果是通过 attach 进入的容器,在退出容器的时候,如果不想让容器停止运行的话,就不能使用exit命令或者Ctrl+D快捷键的形式退出,而是使用 Ctrl + P + Q 组合键退出容器。docker exec -it 容器名称/id/bin/bash#如果是通过 exec 命令进入的容器,在退出容器的时候,就可以使用exit或者Ctrl+D快捷键退出容器,同时容器不会停止运行,这也是exec与attach的最大区别。当然,你也可以使用Ctrl + P + Q 组合键退出容器,容器一样不会停止运行。