珂珂的个人博客 - 一个程序猿的个人网站

威联通docker安装mysql

今天尝试给威联通中安装mysql,发现自带的AppCenter无,于是尝试在docker中安装.

在ContainerStation 左边创建TAB中输入mysql,点Docker Hub.  这里直接点安装应该是由于被墙一直加载中。

我们记住这个名字  mysql。   还有一种镜像叫mysql-server


记住这个mysql/mysql-server    我查询两者的区别MySQL Docker – 两个 MySQL Docker 镜像的区别|极客笔记 (deepinout.com)

mysql/mysql-server 镜像是基于 Oracle 官方的 MySQL 镜像构建的。该镜像是官方推荐使用的 MySQL Docker 镜像之一。该镜像默认使用 UID 1001 和 GID 0 的用户运行 MySQL 服务器实例,该用户不具有系统权限。如果需要操作系统权限(例如更改文件夹权限等),需要使用 root 权限进入容器。

创建 mysql/mysql-server 容器的命令:

docker run -d \
--name mysql-server \
-e MYSQL_ROOT_PASSWORD=<password> \
mysql/mysql-server:latest

mysql:latest 镜像是 MySQL 官方提供的 Docker 镜像。该镜像是从源代码构建的,包含了所有的 MySQL 功能。默认情况下,该镜像使用 root 用户来运行 MySQL 服务器实例,具有操作系统权限。可以通过user参数设置使用其他用户运行MySQL。

创建 mysql:latest 容器的命令:

docker run -d \
--name mysql-server \
-e MYSQL_ROOT_PASSWORD=<password> \
mysql:latest

两个镜像的主要区别在于基础镜像的不同:mysql/mysql-server 是基于 Oracle 官方的 MySQL 镜像构建的,而 mysql:latest 是从源代码构建的。

此外,两个镜像默认运行 MySQL 实例的用户也有所不同。mysql/mysql-server 镜像默认使用 UID 1001 和 GID 0 的用户运行 MySQL 服务器实例,而 mysql:latest 镜像默认使用 root 用户。这也意味着,使用 mysql/mysql-server 镜像时需要注意容器内的用户权限问题,而使用 mysql:latest 镜像时则需要注意在容器内如何使用 root 权限。

另外,mysql/mysql-server 镜像还提供了一些方便的脚本和工具,例如 mysqlrouter 和 mysqldump,而 mysql:latest 镜像则不包含这些附加工具。


在选择 MySQL Docker 镜像时,需要看自己的实际情况需求。如果需要更多的方便工具和脚本,建议选择 mysql/mysql-server 镜像;如果不需要这些工具,同时也需要使用 root 权限操作,那么 mysql:latest 镜像可能是更为合适的选择。


再接着最上面,可以通过直接提取镜像文件来安装

我这里输入mysql   提取还挺快的。

提取完成后直接点击列表中的加号,全部默认,发现容器不能启动。看日志可以看到

You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD

这个从字面意思很好理解,但创建容器完成后无法再修改环境变量?

那么我们删除容器,重新创建,创建容器的时候点高级设置

这时候发现容器可以正常启动,点进终端机

输入mysql -u root -p123456

出现以下界面表示连接成功

如果用navicat 无法连接,先查询是否允许远程连接,先用sql查询是否有 root  %

select user,host from mysql.user;

我这里默认已经有一个root   %

但会出现以下错误

那么先查询更多信息

select host,user,plugin,authentication_string from mysql.user;

发现plugin 是caching_sha2_password 所以无法连接

可以用以下命令

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

更新user为root,host为% 的密码为123456


ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

更新user为root,host为localhost 的密码为123456

接着flush privileges;

然后发现就可以连接了。

用quit;推出mysql命令界面。



上一篇:个人代码全部开源

下一篇:centos stream 9部署strongswan


0 评论

查看所有评论

给个评论吧