docker安装mysql 8_初学docker并安装mysql8

本文详细记录了在CentOS7.5系统上通过Docker安装MySQL8.0.19的过程,包括修改Docker镜像源、拉取MySQL镜像、启动容器、解决字符集问题、设置远程连接以及MySQL身份验证插件的转换,旨在帮助初学者理解Docker安装MySQL的步骤。
摘要由CSDN通过智能技术生成

安装docker

yum install -y docker.io

yum install -y epel-release

安装完成后修改docker镜像

我这边是centos7.5,所以修改镜像配置在

/etc/docker/daemon.json

增加

{

"registry-mirrors": ["https://id.mirror.aliyuncs.com"]

}

其他系统自己去搜

安装mysql

搜索mysql镜像,或者直接安装最新版

docker search mysql

拉取镜像

docker pull mysql:latest

安装的是最新的mysql:8.0.19

查看可用镜像

docker images

运行mysql镜像

docker run -d --name mysql -p 3306:3306 -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=你的密码 docker.io/mysql:8.0.19

关于参数的解释

-d 后台运行

--name 设置别名

-p 端口映射 冒号前为本机端口

-v 目录挂载 冒号前为本机目录

-e 环境配置参数 这里设置的是root密码

最后其实我不太明白为何我的镜像运行要加docker.io/,网上搜到的镜像名都是直接mysql而已

mysql配置

运行脚本

首先要查看容器全ID

docker inspect mysql(这里是你的容器别名)

把之前服务器导出的sql脚本复制到docker容器中

docker cp /usr/local/scripts/mysql-bak.sql 容器全ID:/usr/local/scripts

导入了之前服务器的脚本后,发现乱码,一查数据库编码

show variables like 'character%';

长这逼样

+--------------------------+--------------------------------+

| Variable_name | Value |

+--------------------------+--------------------------------+

| character_set_client | latin1 |

| character_set_connection | latin1 |

| character_set_database | utf8mb4 |

| character_set_filesystem | binary |

| character_set_results | latin1 |

| character_set_server | utf8mb4 |

| character_set_system | utf8 |

| character_sets_dir | /usr/share/mysql-8.0/charsets/ |

+--------------------------+--------------------------------+

8 rows in set (0.01 sec)

什么年代了,为什么还不默认utf8,不太明白

故要设置my.cnf,又发现容器中没有vim,所以接下来继续在容器中安装vim

安装vim(其实是我当时脑瘫了,直接在主机上编辑好传到容器中就行了)

更新apt

apt-get update

发现很慢,又去更新apt的镜像,地址在

/etc/apt/sources.list

更新为用网易的镜像

deb http://mirrors.163.com/debian/ jessie main non-free contrib

deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib

deb http://mirrors.163.com/debian/ jessie-backports main non-free contrib

deb-src http://mirrors.163.com/debian/ jessie main non-free contrib

deb-src http://mirrors.163.com/debian/ jessie-updates main non-free contrib

deb-src http://mirrors.163.com/debian/ jessie-backports main non-free contrib

deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib

deb-src http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib

更新后速度飞快,不多逼逼,继续安装

apt-get update

apt-get install vim

结果报错

Reading package lists... Done

Building dependency tree

Reading state information... Done

Some packages could not be installed. This may mean that you have

requested an impossible situation or if you are using the unstable

distribution that some required packages have not yet been created

or been moved out of Incoming.

The following information may help to resolve the situation:

The following packages have unmet dependencies:

vim : Depends: libtinfo5 but it is not going to be installed

幸好还有小学英语水平,这最后一句说的是没有libtinfo5的依赖,那我再安装这个玩意

apt-get install libtinfo5

终于尼玛的完成了

接下来编辑my.cnf,在mysqld下面黏贴几个玩意

character-set-client-handshake = FALSE

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

重启docker

docker restart mysql

终于正常了,佛了

设置mysql远程连接

查看用户权限

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

+-----------+------------------+-----------------------+------------------------------------------------------------------------+

| host | user | plugin | authentication_string |

+-----------+------------------+-----------------------+------------------------------------------------------------------------+

| % | root | caching_sha2_password | $A$005$f&/uW)ZX LcE%"f3mdndFClPzqRACxH9vTuOk90Gs12jnuKt0k4Ens9IB |

| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |

| localhost | mysql.session | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |

| localhost | mysql.sys | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |

| localhost | root | caching_sha2_password | $A$005$k{`vW;lca|%)f~lr[T6ot4.MCPhmNFHKzti8SS0TwxMgcubqb2l89hTIlr44 |

+-----------+------------------+-----------------------+------------------------------------------------------------------------+

这个镜像好像默认开启了root的远程连接权限,但是却无法用navicat登工具进行连接

mysql8默认的身份验证插件为caching_sha2_password,该插件不能使用旧版本的客户端来连接(也许新的第三方客户端可以连接该插件),粘贴一份mysql官方的说明

If your MySQL installation must serve pre-8.0 clients and you encounter compatibility issues after upgrading to MySQL 8.0 or higher, the simplest way to address those issues and restore pre-8.0 compatibility is to reconfigure the server to revert to the previous default authentication plugin (mysql_native_password). For example, use these lines in the server option file:

[mysqld] default_authentication_plugin=mysql_native_password

That setting enables pre-8.0 clients to connect to 8.0 servers until such time as the clients and connectors in use at your installation are upgraded to know aboutcaching_sha2_password. However, the setting should be viewed as temporary, not as a long term or permanent solution, because it causes new accounts created with the setting in effect to forego the improved authentication security provided by caching_sha2_password.

故修改插件为mysql_native_password

ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘你的密码’;

大功告成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值