获取镜像
# 拉取镜像
docker pull mysql:5.7
# 查看镜像
docker images
创建相关文件夹
……
启动容器
docker run -d -p 3306:3306 --privileged=true -v /server_log/mysql:/var/log/mysql -v /server_data/mysql:/var/lib/mysql -v /server_conf/mysql:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root --name mysql_5.7 mysql:5.7
参数说明:
-p 3306:3306 \ # 将容器的3306端口映射到主机的3306端口,'\'指换行符,下同
-d # 后台运行
--name mysql:5.7 \ # 容器名称
--privileged=true # 容器获取root权限
-v /server_data/mysql:/var/lib/mysql \ # 将数据文件挂载到主机,冒号左边为Linux的目录结构,右边为docker内部的
-v /server_log/mysql:/var/log/mysql \ # 将日志文件夹挂戟到主机
-v /server_conf/mysql:/etc/mysql/conf.d \ # 将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root \ # 初始化root用户的密码为:root
添加配置文件
cd /server_conf/mysql/
vim my.cnf
配置文件:
[client]
default_character_set=utf8mb4
[mysqld]
collation-server = utf8mb4_general_ci
character_set_server = utf8mb4
重启MySQL
docker restart mysql_5.7
随docker自启
# 设置mysql每次开机随docker自启动
docker update mysql --restart=always
如果MySQL 无法正常登录 ,附加修改密码
# 进入先前定义的my.cnf文件 在mysqld 下添加 skip-grant-tables
[mysqld]
skip-grant-tables
collation-server = utf8mb4_general_ci
# 正常进行mysql登录
mysql -uroot -p
# 输入空密码登录
# 修改密码
update MySQL.user set authentication_string=password('root') where user='root';
# 将配置文件修改回去,并重启
docker restart mysql_5.7