1 获取mysql官方最新docker镜像
$ sudo docker pull mysql/mysql-server:latest
耐心等待下载,完成后可以通过以下命令查看下载的镜像:
$ sudo docker images
2 创建并启动mysql服务容器
2.1 创建一个文件夹用于挂载mysql数据库文件
$ sudo mkdir /docker/mysql_data -p
2.2 生成mysql容器
$ sudo docker run --name mysql -d --restart always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /docker/mysql_data:/var/lib/mysql mysql/mysql-server
其中,--name mysql
:容器指定名称为mysql
;-d
:后台运行容器,并返回容器ID;--restart always
:在容器退出时总是重启容器;-p 3306:3306
:将宿主机的3306端口(前者)映射到容器的3306端口(后者);-e MYSQL_ROOT_PASSWORD=123456
:设置mysql的root密码为123456
;-v /docker/mysql_data:/var/lib/mysql
:将宿主机的目录/docker/mysql_data
映射到容器的目录/var/lib/mysql
,用于存放容器的mysql数据库文件。
2.3 查看容器启动状态
- 查看已经创建的容器:
$ sudo docker ps -a
- 查看已经启动的容器:
$ sudo docker ps -s
- 若容器未启动,则通过以下命令启动:
$ sudo docker start mysql
其中mysql
是容器名称,也可以使用CONTAINER ID(见下图)代替,如81f7c15f9415
2.4 docker容器下命令行连接mysql数据库
- 首先进入mysql容器的bash终端:
$ sudo docker exec -it mysql bash
- 连接mysql:
$ mysql -u root -p
输入步骤2.2设置的mysql root密码,之后就可以自由操作mysql了!
2.5 通过宿主机命令行连接mysql
- 首先在宿主机上安装mysql客户端:
$ sudo apt-get install -y mysql-client
- 尝试连接:
$ mysql -h 127.0.0.1 -u root -p
输入密码后显然是连接不上的:
注意图中红框的ip,这是宿主机ip,需要在mysql中添加用户允许此ip连接,其实就跟添加允许远程用户连接mysql是一样的,例子如下:
先通过步骤2.4连接到mysql,之后添加数据库test,针对此库添加用户testuser,密码是123456
CREATE DATABASE test;
GRANT ALL PRIVILEGES ON test.* TO testuser@172.17.0.1 IDENTIFIED BY '123456';
FLUSH PRIVILEGES;
然后就可以在宿主机上连接mysql数据库了:
$ mysql -h 127.0.0.1 -u testuser -p