Linux aarch64架构中使用docker安装mysql8
1、遇到问题:
官网下载mysql包,安装完成后,启动mysql一直显示-bash: ./mysqld: 无法执行二进制文件。
网上找了各种资料,但是都没有作用,怀疑自己操作姿势不正确,以为是自己包下错了(其实也是包不对),重新下载了不同的各种包,换了各种安装方法,发现仍旧启动不了。
无意间发现了一篇友友在aarch64架构下安装mysql,他提到了一嘴说这个架构下目前mysql官网上所有的包都是不能直接用滴,唯一的解决方法就是使用docker。
这我不得赶紧查看一下我的Linux架构。
这一下找到了问题所在,好吧,那就上docker吧,还能咋滴。
2、在服务器A上安装docker
yum -y install docker
service 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 组合键退出容器,容器一样不会停止运行。