我使用的系统是:
- CentOS 7(腾讯云服务器)
- macOS 10.14
一、操作前提
- 安装好Docker
- 耐心阅读本教程
二、操作步骤
- 创建容器
docker pull mysql:5.7 # 拉取mysql5.7的镜像,我是用的是5.7 #docker pull mysql:latest # 拉取mysql8.0+的镜像
- 启动容器
docker run -p 3306:3306 --name mysql MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
参数 值 作用 run 以某个镜像为基础运行一个容器 -p 3306:3306 将容器中的3306端口映射到主机的3306端口上(要映射的容器端口:要映射的主机端口) —name mysql 赋予该容器一个名字 -v 挂载卷 -e MYSQL_ROOT_PASSWORD=123456 为容器创建环境变量 -d mysql:5.7.19 该容器使用的镜像
- 查看MySQL容器是否启动
docker ps
如果能看到类似下面的信息,则说明MySQL容器启动好了
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e8d8030753f3 mysql:5.7 "docker-entrypoint.s…" 6 seconds ago Up 4 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql
- 更改密码(允许外部访问)
首先先使用Docker命令进入mysql容器里
docker exec -it mysql /bin/bash
选择mysql库,查看user表中的一些信息
SELECT host,user FROM mysql.user;
只要mysql返回的信息如下
mysql> select host,user from mysql.user; +-----------+---------------+ | host | user | +-----------+---------------+ | % | root | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+---------------+
其中,root的host有%的话,我们就可以远程连接到服务器的mysql中(端口号为3306)
如果没有上述结果,则需要执行下面的语句(BY后面的引号可以换成自己想要的密码)
USE mysql; ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; flush privileges;
再次进行确认,无误后开始使用Navicat连接(SQLyog等软件都是可以的)