- pull镜像
➜ ~ docker pull mysql:latest
- 查看镜像版本
➜ ~ docker image inspect mysql:latest|grep -i version
"GOSU_VERSION=1.12",
"MYSQL_VERSION=8.0.22-1debian10"
"DockerVersion": "18.09.7",
"GOSU_VERSION=1.12",
"MYSQL_VERSION=8.0.22-1debian10"
- 启动容器
➜ ~ docker run -p 3306:3306 --name mysql8.0 -v $PWD/mysql/conf:/etc/mysql/conf.d -v $PWD/mysql/logs:/logs -v $PWD/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
0ece1935fb67caecd630a8882c7e1c808ed4c9276c512788cc0b86f31a716847
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-v -v $PWD/mysql/conf:/etc/mysql/conf.d:将主机当前目录下的 /mysql/conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
-v $PWD/mysql/logs:/logs:将主机当前目录下的 /mysql/logs 目录挂载到容器的 /logs。
-v $PWD/mysql/data:/var/lib/mysql :将主机当前目录下的/mysql/data目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
至此,mysql的镜像和容器均已启动成功。
尝试使用客户端连接mysql,连接失败。
- 进入mysql容器
可以通过客户端CLI操作
或者通过命令进入:
➜ ~ docker exec -it 0ece1935fb67caecd630a8882c7e1c808ed4c9276c512788cc0b86f31a716847 /bin/sh
- 登录mysql
➜ ~ mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.22 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
- 授权
mysql> GRANT ALL ON *.* TO 'root'@'%';
Query OK, 0 rows affected (0.00 sec)
- 刷新权限
mysql> flush privileges;
- 更新加密规则
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
Query OK, 0 rows affected (0.01 sec)
- 更新root用户加密密码
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
- 再次刷新权限
mysql> flush privileges;
使用客户端访问mysql,成功。