1、在命令行查看mysql的版本号

select version();

2、拉取mysql镜像

docker pull mysql           //不指定版本默认拉latest版本
docker pull mysql:8.0.16    //拉取指定版本镜像

3、创建数据目录和配置文件

mkdir -p /usr/mysql/conf /usr/mysql/data
chmod -R 755 /usr/mysql/

4、创建配置文件

vim /usr/mysql/conf/my.cnf

my.cnf内容如下:

[client]

#socket = /usr/mysql/mysqld.sock

default-character-set = utf8mb4

[mysqld]

#pid-file        = /var/run/mysqld/mysqld.pid

#socket          = /var/run/mysqld/mysqld.sock

#datadir         = /var/lib/mysql

#socket = /usr/mysql/mysqld.sock

#pid-file = /usr/mysql/mysqld.pid

datadir = /usr/mysql/data

character_set_server = utf8mb4

collation_server = utf8mb4_bin

secure-file-priv= NULL

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Custom config should go here

!includedir /etc/mysql/conf.d/

5、启动创建容器(注意是一条命令执行)

docker run --restart=unless-stopped -d --name mysql -v /usr/mysql/conf/my.cnf:/etc/mysql/my.cnf -v 
/usr/mysql/data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

参数解释:
-v : 挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录

-d : 后台运行容器

-p 映射容器端口号和宿主机端口号

-e 环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码

6、看到创建的mysql容器

docker ps -a

7、修改mysql密码以及可访问主机

docker exec -it mysql /bin/bash

mysql -uroot -p

use mysql

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';

flush privileges

mysql_native_password,mysql8.x版本必须使用这种模式,否则navicate无法正确连接

经过以上步骤,再次远程使用Navicat连接数据库时就可以正常连接了

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐