建立镜像#拉取官方镜像(我们这里选择5.7,如果不写后面的版本号则会自动拉取最新版)docker pull mysql:5.7 # 拉取 mysql 5.7
docker pull mysql # 拉取最新版mysql镜像
检查是否拉取成功docker images
一般来说数据库容器不需要建立目录映射docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7–name:容器名,此处命名为mysql
-e:配置信息,此处配置mysql的root用户的登陆密码
-p:端口映射,此处映射 主机3306端口 到 容器的3306端口
如果要建立目录映射
mkdir -p /data/docker/mysql/conf
mkdir -p/data/docker/mysql/logs
mkdir -p/data/docker/mysql/data
docker run -p 3306:3306 --name mysql \
-v /data/docker/mysql/conf:/etc/mysql \
-v /data/docker/mysql/logs:/var/log/mysql \
-v /data/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:5.7
docker run -p 3306:3306 --name mysql -v /data/docker/mysql/conf:/etc/mysql/conf.d -v /data/docker/mysql/logs:/var/log/mysql -v /data/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --restart=always --privileged=true -d mysql:5.7
-v:主机和容器的目录映射关系,":"前为主机目录,":"之后为容器目录
检查容器是否正确运行docker container ls可以看到容器ID,容器的源镜像,启动命令,创建时间,状态,端口映射信息,容器名字
配置文件最好是以.cnf作为后缀, 试过以.conf后缀, 可以启动mysql, 但配置文件不起作用
mysql.cnf 文件内容
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
# default: sql_mode= STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION# modeified: sql_mode= STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet=10M
default-time_zone='+8:00'
进入docker本地客户端设置远程访问账号
docker exec -it mysql bash$mysql -uroot -p123456
mysql>grant all privileges on *.* to root@'%' identified by "password";