通过 docker 运行 mysql

本文介绍通过 docker 来运行 mysql 的方法

目的是仅用于开发,生产环境的话题不在此文的范围内

运行 mysql

运行 mysql 分两步

首先,创建一个持久卷

docker volume create mysql-data

然后,启动 mysql 实例

docker run \
--name mysql \
--init \
--restart=always \
-v mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-d mysql:8

这样就可以通过账号 root,密码 123456 来连接上 mysql 了

作为 mysql 客户端

运行 MySQL 之后,需要验证一下是否成功

docker run -it --rm mysql:8 mysql -h192.168.1.2 -uroot -p123456

如果只用于本机开发,不考虑其他方面,往下都内容都不用看了

给 mysql 设置其他用户

如果不想用 root 用户,也可以另外设置新的用户

docker run \
--name mysql \
--init --restart=always \
-v mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_USER=someuser \
-e MYSQL_PASSWORD=123456 \
-p 3306:3306 \
-d mysql:8

要点就在于 MYSQL_USER 和 MYSQL_PASSWORD 两个环境变量

这样就可以通过 账号 someuser 密码 123456 来连接 mysql

当然, MYSQL_ROOT_PASSWORD 是不能缺的

设置 max_connection

有几种方法

第一种方法 用 my.cnf 配置的方式

定义一个配置文件 custom.cnf

[mysqld] 
max_connections=1000

在启动时将文件映射到配置文件的目录下

docker run -v ./custom.cnf:/etc/mysql/conf.d/custom.cnf -d mysql:8

第二种方法 不用配置文件,用命令的方式

docker run -d mysql:8 --max_connections=1000

通过增加 --max_connections 参数

第三种方法 通过 SQL 语句修改

# 修改最大值
SET GLOBAL max_connections = 1000;
# 确认修改结果
SHOW VARIABLES LIKE 'max_connections';

设置 sql-mode

将 MySQL 设置为严格模式是一个好的习惯,无论是开发还是生产环境
通过以下选项可以进行设定

docker run -d mysql:8 --sql-mode="STRICT_TRANS_TABLES"

设置 事务隔离级别

MySQL的默认隔离级别是 repeatable read,
也许你想要设定为 read commited
通过以下选项可以进行设定

docker run -d mysql:8 --transaction-isolation="READ-COMMITTED"

懒人的启动选项

以下是我常用的启动选项,就是把上面几个都包括了
视情况修改为真正要用的,特别是用户名和密码的部分

docker run \
--name mysql \
--init \
--restart=always \
-v mysql-data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_USER=someuser \
-e MYSQL_PASSWORD=123456 \
-p 3306:3306 \
-d mysql:8 --max_connections=1000 --sql-mode="STRICT_TRANS_TABLES" --transaction-isolation="READ-COMMITTED"

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部