下载MySQL镜像
docker pull mysql
默认是下载 latest 标签的mysql,
-
启动 MySQL 镜像,指定密码为123456,映射目录/home/xxljobwork,指定默认编码为utf-8
docker run -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 \
-v /home/xxljobwork:/home/xxljobwork mysql --character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
Docker容器启动的时候,如果要挂载宿主机的一个目录,可以用-v参数指定。上面把宿主机的 /home/xxljobwork 目录挂载到容器的 /home/xxljobwork 目录.
输出如下:
如果有输出:
/usr/sbin/mysqld: ready for connections. Version: '8.0.23' socket: '/var/run/mysqld/mysqld.sock' port: 3306 MySQL Community Server - GPL.
则表示,启动mysql成功!可以看到版本是8.0.23
-
查看 Docker 进程
[root@localhost huangjinjin]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f5728697fb68 mysql "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp clever_banzai
988ebe1ec96c mongo:latest "docker-entrypoint.s…" 7 months ago Up 16 minutes 27017/tcp bin_mongo_1
1effa1afa039 redis:latest "docker-entrypoint.s…" 7 months ago Up 16 minutes 6379/tcp bin_redis_1
-
进入 Docker
docker exec -it f5728697fb68 /bin/bash
其中 f5728697fb68 是通过docker ps 查询得到的容器ID。
-
在Docker容器下进入MySQL
mysql -u root -p123456
-
设置MySQL权限
select Host,User,authentication_string from mysql.user;
可以发现,默认已经将 root 用户设置了远程访问,也就是%的那条记录。但是密码和 localhost 的不一样。因此,需要修改密码,并刷新权限。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
注意:不要使用以下命令,执行会报错
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
0x02:远程连接MySQL
-
查看Linux的IP地址
ifconfig
-
使用Navicat连接
点击连接测试,效果如下: