通过docker对Mysql进行部署。
如果没有部署过docker,看我之前写的
拉取镜像
前往dockerHub官网地址,搜索mysql。
找到要拉取的镜像版本,在tag下找到版本。
拉取mysql镜像,不指定版本数,默认拉取最新的镜像,我这里拉取8.0.12版本
sudo docker pull mysql:8.0.12
运行容器
sudo docker run -d -p 3306:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:8.0.12
参数 | 解释 |
---|---|
-p 3306:3306 | 将容器的3306端口映射到主机的3306端口 |
-v /usr/local/mysql/data:/var/lib/mysql | 将容器中的数据文件夹挂载到主机对应的/usr/local/mysql/data文件夹中 |
-v /usr/local/mysql/conf:/etc/mysql/conf.d | 将容器的配置文件夹挂载到主机对应的/usr/local/mysql/conf文件夹中 |
-e MYSQL_ROOT_PASSWORD=123456 | 设置初始化root用户的密码 |
开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent && firewall-cmd --reload
连接MySQL出现2059问题
部署后,通过navicat连接mysql发现报出2059的异常
这是因为mysql 在8版本以后的加密规则为caching_sha2_password,而之前版本的加密规则为mysql_native_password
所以需要设置root用户的加密规则为mysql_native_password
进入容器
docker exec -it mysql bash
登录mysql
mysql -u root -p
修改加密方式
如果是不在非本地连接mysql,需要修改的是root@%的加密方式
alter user 'root'@'%' identified with mysql_native_password by '123456';