1.编写docker-compose.yml文件

  1. version: '3.1'
  2. services:
  3. mysql:
  4. image: mysql:5.7 #到dockerhub找到你要的镜像版本
  5. container_name: mysql5.7
  6. privileged: true #一定要设置为true,不然数据卷可能挂载不了,启动不起
  7. ports:
  8. - 3306:3306
  9. environment:
  10. MYSQL_USER: admin
  11. MYSQL_PASSWORD: 123456
  12. MYSQL_ROOT_PASSWORD: xxxx #root用户的密码
  13. TZ: Asia/Shanghai
  14. command:
  15. --character-set-server=utf8mb4
  16. --collation-server=utf8mb4_general_ci
  17. --explicit_defaults_for_timestamp=true
  18. --lower_case_table_names=1
  19. --max_allowed_packet=128M
  20. --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
  21. volumes:
  22. - ./voulme/data:/var/lib/mysql
  23. - ./voulme/conf/my.cnf:/etc/my.cnf
  24. restart: always

注意:

我的目录格式是这样的如下:
image.png
2.编写docker-compose.yml文件 之后在yml 文件目录下执行 docker-compose up -d
3.docker ps 找到mysql容器id 在执行 docker exec -it id bash 进入MySQL容器内部
4.执行以下命令:

  1. 1.mysql -u root -p #以root用户登陆进去,创建admin用户 或者也可以直接给root 用户设置远程连接
  2. 2.使用“use mysql”命令,选择要使用的数据库,修改远程连接的基本信息,保存在mysql数据库中,因此使用mysql数据库。
  3. 3.使用GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;或者update user set host = '%' where user = 'root';命令可以更改远程连接的设置。
  4. 5.使用“select host,user,authentication_string from user;”查看修改是否成功。
  5. 如果还不能连接成功,比如用navicat连接会出现10060错误,解决方法:
  6. 6.查看防火墙规则,看ports是否开放了3306端口
  7. firewall-cmd --list-all
  8. 7.开放端口
  9. firewall-cmd --permanent --add-port=3306/tcp
  10. 8.重启防火墙(修改配置后要重启防火墙)
  11. firewall-cmd --reload

END

最后用远程工具测试连接即可!!!