前言
基础环境:
硬件:香橙派5
操作系统:openkylin
cpu架构:arm
过程:
最近有个任务,要在新的环境中验证一些服务是否可用。目的时向全国产化靠拢。
需要在香橙派上安装openkylin,一开始尝试的是香橙派3b,发现其不支持
openkylin。后经过查看,发现香橙派5 可以安装openkylin。
但是因为系统是2023 年7 月份刚刚出的,所以在过程中碰到了非常多的问题。
这里记录一下mysql 方面的问题。
这里先说解决方案。然后再挨个的展示碰到的问题。(在2023 年8 月31 之时有这个
问题,但是这个问题可能会随着系统更新被修复。)
解决办法
拉取arm架构下的镜像版本
使用docker 来安装mysql 8. 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 / mysql d. log: / var / log/ mysql d. 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_73">mysql -server无法安装
显示为满足依赖的关系。
单独尝试安装libmecab2报如下错误。
这个错误描述并不准确,应当是这个软件包还没有被移植到openkylin这里。
甚至在“ubuntu update”里也只能找到x86的安装包,没有找到arm64的安装包。
直接使用命令:
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” 字段。