1.编写docker-compose.yml文件
version: '3.1'
services:
mysql:
image: mysql:5.7 #到dockerhub找到你要的镜像版本
container_name: mysql5.7
privileged: true #一定要设置为true,不然数据卷可能挂载不了,启动不起
ports:
- 3306:3306
environment:
MYSQL_USER: admin
MYSQL_PASSWORD: 123456
MYSQL_ROOT_PASSWORD: xxxx #root用户的密码
TZ: Asia/Shanghai
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
--sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
volumes:
- ./voulme/data:/var/lib/mysql
- ./voulme/conf/my.cnf:/etc/my.cnf
restart: always
注意:
我的目录格式是这样的如下:
2.编写docker-compose.yml文件 之后在yml 文件目录下执行 docker-compose up -d
3.docker ps 找到mysql容器id 在执行 docker exec -it id bash 进入MySQL容器内部
4.执行以下命令:
1.mysql -u root -p #以root用户登陆进去,创建admin用户 或者也可以直接给root 用户设置远程连接
2.使用“use mysql”命令,选择要使用的数据库,修改远程连接的基本信息,保存在mysql数据库中,因此使用mysql数据库。
3.使用GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;或者update user set host = '%' where user = 'root';命令可以更改远程连接的设置。
5.使用“select host,user,authentication_string from user;”查看修改是否成功。
如果还不能连接成功,比如用navicat连接会出现10060错误,解决方法:
6.查看防火墙规则,看ports是否开放了3306端口
firewall-cmd --list-all
7.开放端口
firewall-cmd --permanent --add-port=3306/tcp
8.重启防火墙(修改配置后要重启防火墙)
firewall-cmd --reload
END
最后用远程工具测试连接即可!!!