前言 拉取 MySQL 镜像 启动 MySQL 容器 Docker 启动容器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 -v /container/mysql5.7/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -e TZ=Asia/Shanghai \ -d mysql:5.7 -v /container/mysql5.7/conf:/etc/mysql/conf.d \ -v /container/mysql5.7/data:/var/lib/mysql \ -v /container/mysql5.7/logs:/var/log /mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -e TZ=Asia/Shanghai \ -d mysql:5.7 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7485feae5c64 mysql:5.7 "docker-entrypoint.s…" 7 seconds ago Up 5 seconds 33060/tcp, 0.0.0.0:3308->3306/tcp mysql5.7
参数 说明 -e TZ=Asia/Shanghai
设置系统时区 -e MYSQL_ROOT_PASSWORD=123456
设置数据库密码
Docker-Compose 启动容器 docker-compose.yml
配置文件的内容1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 version: "3.5" services: mysql: image: mysql:5.7 container_name: mall-mysql privileged: false restart: always environment: TZ: 'Asia/Shanghai' MYSQL_ROOT_PASSWORD: 123456 ports: - 3308 :3306 volumes: - '/container/mysql5.7/conf:/etc/mysql/conf.d' - '/container/mysql5.7/data:/var/lib/mysql' - '/container/mysql5.7/logs:/var/log/mysql' command: --default-authentication-plugin=mysql_native_password
验证 MySQL 服务器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 mysql> create database bbs default character set utf8; mysql> create table bbs.user(id bigint(20) not null auto_increment primary key, name varchar(25) not null) engine=innodb auto_increment=3 default charset=utf8; mysql> insert into bbs.user(name) values("peter" ); mysql> select * from bbs.user; +----+-------+ | id | name | +----+-------+ | 3 | peter | +----+-------+ 1 row in set (0.00 sec) mysql> exit
开启 MySQL 远程访问 开启 MySQL 远程访问的权限,这里仅供演示,出于数据库安全考虑,强烈不建议开启 root
用户的远程访问权限,尤其是生产环境。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 mysql> use mysql; mysql> grant all privileges on *.* to root@'%' identified by "123456" ; mysql> flush privileges; mysql> exit
如果以后想在宿主机上或者外部通过 MySQL 客户端连接到 Docker 容器内的 MySQL 服务器,使用以下命令即可。其中 192.168.1.198
是 Docker 容器所在宿主机的 IP,3308
是宿主机的 MySQL 映射端口。
1 mysql -h 192.168.1.198 -u root -P 3308 -p
完成 MySQL 授权后,如果外部依然无法连接 Docker 容器内的 MySQL 服务器,务必检查宿主机的防火墙是否开放了 MySQL 的映射端口(如上面的 3308
端口)。
备份 MySQL 数据库 查看 MySQL 的日志信息 更改 MySQL 的最大连接数 参数 默认值 说明 max_connections 151 数据库的最大连接数 max_user_connections 单用户的最大连接数
临时更改生效 1 2 3 4 5 6 7 8 9 mysql> set GLOBAL max_connections=16384; mysql> set GLOBAL max_user_connections=2000; mysql> exit
永久更改生效 1 2 3 4 5 6 7 max_connections=16384 max_user_connections=2000
验证更改结果 1 2 3 4 5 6 7 8 9 mysql> show variables like 'max_connections' ; mysql> show variables like "max_user_connections" ; mysql> exit
提示
若 MySQL 的最大连接数更改后无法生效,则建议进一步更改 Linux 系统的最大打开文件描述符数,具体可以参考 这篇文章 。
更改系统的镜像源 若希望更改系统的镜像源,可以按照以下步骤进行操作,适用于 Debian 9(Stretch)。