前言
基础环境:
硬件:香橙派5
操作系统:openkylin
cpu架构:arm
过程:
最近有个任务,要在新的环境中验证一些服务是否可用。目的时向全国产化靠拢。
需要在香橙派上安装openkylin,一开始尝试的是香橙派3b,发现其不支持
openkylin。后经过查看,发现香橙派5 可以安装openkylin。
但是因为系统是2023 年7 月份刚刚出的,所以在过程中碰到了非常多的问题。
这里记录一下mysql方面的问题。
这里先说解决方案。然后再挨个的展示碰到的问题。(在2023 年8 月31 之时有这个
问题,但是这个问题可能会随着系统更新被修复。)
解决办法
拉取arm架构下的镜像版本
使用docker来安装mysql8. 0.29 (这个版本的mysql用了快两年半了,没有出现
过什么大问题)
使用docker命令:docker pull mysql: 8.0 .29 -- platform= aarch64来指
定使用arm64平台的镜像。如果不加platform参数,一般默认是x86,不可以运行在
arm平台。
运行镜像
拉取成功后,运行镜像:
docker run - p 3306 : 3306 -- name mysql -- restart= always -- privileged= true \
- v / opt/ work/ mysql/ mysqld. log: / var / log/ mysqld. log \
- v / opt/ work/ mysql/ data: / var / lib/ mysql \
- v / opt/ work/ mysql/ conf: / etc/ mysql \
- v / etc/ localtime: / etc/ localtime: ro \
- e MYSQL_ROOT_PASSWORD = 123456 - d mysql: 8.0 .29
-- name 指定的是docker容器的名称;
-- restart 表示容器随着docker的启动而启动;
-- privileged 表示获取root权限;
- p 表示映射主机与容器内的端口;
- v 表示挂载宿主机与容器内的文件;
- d 表示使用那个镜像;
- e 表示指定环境变量。
进入镜像修改设置
1 :进入对应的容器
docker exec - it 【CONTAINER ID 】 / bin/ bash
2 :进入mysql命令行
mysql - u root - p
3 :切换数据库:use mysql;
4 :查看一些配置:select Host, User, plugin from user where 1 = 1 ;
+ -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- + -- -- -- -- -- -- -- -- -- -- -- - +
| Host | User | plugin |
+ -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- + -- -- -- -- -- -- -- -- -- -- -- - +
| % | root | mysql_native_password |
| localhost | mysql. infoschema | caching_sha2_password |
| localhost | mysql. session | caching_sha2_password |
| localhost | mysql. sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
+ -- -- -- -- -- - + -- -- -- -- -- -- -- -- -- + -- -- -- -- -- -- -- -- -- -- -- - +
5 rows in set ( 0.00 sec)
# 可以看到root分为本地登录和可以在任何地方登录。他们的默认的plugin都是
caching_sha2_password (root@% 的提前被我改过了),这是MySQL8. 0 之后默
认的认证方式。
# 如果你用的还是老旧的MySQL客户端工具或命令工具可能会发生如下报错:
error 2059 : Authentication plugin 'caching_sha2_password' cannot be loaded: / usr/ lib64/ mysql/ plugin/ caching_sha2_password. so: cannot open shared object file: No such file or directory
5 :可以用以下命令修改:
ALTER USER 'user' @'host' IDENTIFIED WITH mysql_native_password BY 'password' ;
eg : ALTER USER 'root' @'%' IDENTIFIED WITH mysql_native_password BY '123456' ;
6 :使用命令:flush privileges; 刷新权限。
7 :退出mysql,即可正常连接。
所遇问题:
mysql-server无法安装
显示为满足依赖的关系。
单独尝试安装libmecab2报如下错误。
这个错误描述并不准确,应当是这个软件包还没有被移植到openkylin这里。
甚至在“ubuntu update”里也只能找到x86的安装包,没有找到arm64的安装包。
docker镜像平台问题
直接使用命令:
dokcer pull mysql: 8.0 .29
以上命令拉拉取下来的镜像默认是x86架构的。会报如下错误:
WARNING : The requested image's platform ( linux/ arm64/ v8) does not match the detected host platform ( linux/ amd64) and no specific platform was requested
所以要用参数“platform” 来指定系统指令架构集。
docker pull mysql: 8.0 .29 -- platform= aarch64
运行起来镜像后,连接MySQL报错。
这个报错是因为从MySQL8. 0 后,根据美国国家标准和技术协会给出的建议,将原来的SHA - 1 算法,改成了SHA2 / 3 系列的算法。但是一些老旧的图形化客户端只支持 “mysql_native_password ”。
MySQL8. 0 后,默认的是:“caching_sha2_password”。
所以需要运行上述命令修改对应用户的 “plugin” 字段。