下载镜像
sudo docker pull mysql:5.7
查看下载的镜像
sudo docker images
创建mysql实例并启动
sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
参数说明
-p 3306:3306 将容器的3306端口映射到主机
--name mysql 给容器命名为mysql
-v /mydata/mysql/log:/var/log/mysql\ 将日志文件挂载到主机
-v /mydata/mysql/data:/var/lib/mysql\ 将数据文件挂载到主机
-v /mydata/mysql/conf:/etc/mysql\ 将配置文件挂载到主机
-e MYSQL_ROOT_PASSWORD=root 将mysql的root密码定为root
-d mysql:5.7 以mysql:5.7镜像启动容器
查看docker容器
sudo docker ps
mysql已启动成功
配置mysql
打开my.cnf文件
vi /mydata/mysql/conf/my.cnf
将下面代码放入文件中
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
重启mysql
sudo docker restart mysql
进入mysql 容器
sudo docker exec -it mysql /bin/bash
可以看到,一个mysql容器就是一个完整的linux环境
查看容器中的mysql配置文件
cd /etc/mysql/
cat my.cnf
看到这个文件的内容就是刚刚我们配置的内容,是因为在创建mysql实例并启动时,对这三个目录进行了映射,在这三个目录下的文件的修改都将同步到mysql容器的对应文件中,就不需要进入mysql容器中再去修改配置,简化了操作
连接数据库
验证mysql启动是否正常
修改mysql密码
1.进入mysql容器
docker exec -it mysql /bin/bash
2.登录mysql
mysql -u root -p
输入密码:root
3.切换数据库
use mysql
4.查询root用户
select * from user where user = root;
5.修改密码
update user set authentication_string = password('新的密码'), password_expired = 'N', password_last_changed = now() where user = 'root';
6.这条命令暂不清楚
update user set plugin="mysql_native_password";
7.刷新权限
flush privileges;
8.退出
quit;
9.重新登录
mysql -u root -p
输入新的密码,登录成功