【MySQL】docker安装mysql5.7
1、docker hub
https://hub.docker.com/_/mysql
2、创建目录
mkdir -p $HOME/mysql/conf $HOME/mysql/data $HOME/mysql/log
3、编辑配置文件
# 编辑配置文件my.cnf vim my.cnf # 新增配置文件内容 [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] init_connect='SET collation_connection = utf8mb4_unicode_ci' init_connect='SET NAMES utf8mb4' character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci skip-character-set-client-handshake skip-name-resolve
4、安装脚本
docker run -d \
-p 3306:3306 \
--privileged=true \
-v $HOME/mysql/conf/my.cnf:/etc/my.cnf \
-v $HOME/mysql/data:/var/lib/mysql \
-v $HOME/mysql/log:/var/log/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql5.7 mysql:5.7 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci
参数说明: run 运行一个容器 -d 后台运行 -p 3306:3306 容器内部端口和服务器端口映射关联 --privileged=true 设置mysql用户,否则外部不能使用root用户登录 -v $HOME/mysql/log:/var/log/mysql 服务器的log目录映射
-v $HOME/mysql/conf/my.cnf:/etc/my.cnf 服务器的/docker/mysql/conf/my.cnf配置映射到docker的my.cnf -v $HOME/mysql/data:/var/lib/mysql 映射数据库的数据目录,避免docker删除重新运行mysql容器,导致数据丢失 -e MYSQL_ROOT_PASSWORD=123456 设置root账号的密码 --name mysql5.7 mysql:5.7 从docker镜像mysql:5.7启动一个容器,并设置容器的名称为mysql5.7 --character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci 设置数据库默认编码
5、配置远程访问(如果可以远程访问就跳过)
进入容器
docker exec -it 容器名称|容器id bin/bash docker exec -it mysql5.7 bin/bash
进入mysql
//1.登录mysql mysql -uroot -p //2.进行授权 GRANT ALL ON *.* TO 'root'@'%'; //3.刷新权限 flush privileges; //4.加密规则 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; //5.更新root密码 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; //6.刷新权限 flush privileges;
不行的话,看下配置文件,并注释bind=127.0.0.1
6、设置开机自启动(可以加到run命令中)可选
docker update mysql --restart=always
7、测试远程连接
省略
参考链接:
https://blog.csdn.net/qq_39893313/article/details/121557788
https://blog.csdn.net/guan1843036360/article/details/124959471