基于Docker的MySQL的安装与配置

举报
李广妮 发表于 2026/10/22 14:13:02 2026/10/22
【摘要】 本文主要讲解如何在docker中安装和部署MySQL环境.

MySQL的安装与配置

MySQL的安装

下载镜像文件

由于``默认拉取最新版的镜像,所以推荐添加上版本号信息(本文使用5.7.41版本)

docker pull mysql:5.7.41

拉取镜像

创建存储目录

为了数据的持久化,新建一个存储目录:

mkdir -p /mydata/mysql

创建MySQL配置

:::: warning 提醒

最新官方MySQL(5.7.19)的docker镜像在创建时映射的配置文件目录有所不同,在此记录并分享给大家:

官方原文:

The MySQL startup configuration is specified in the file /etc/mysql/my.cnf, and that file in turn includes any files found in the /etc/mysql/conf.d directory that end with .cnf. Settings in files in this directory will augment and/or override settings in /etc/mysql/my.cnf. If you want to use a customized MySQL configuration, you can create your alternative configuration file in a directory on the host machine and then mount that directory location as /etc/mysql/conf.d inside the mysql container.

大概意思是说:

MySQL(5.7.19)的默认配置文件是 /etc/mysql/my.cnf 文件。如果想要自定义配置,建议向 /etc/mysql/conf.d 目录中创建 .cnf 文件。新建的文件可以任意起名,只要保证后缀名是 cnf 即可。新建的文件中的配置项可以覆盖 /etc/mysql/my.cnf 中的配置项。

::::

mkdir -p /mydata/mysql/conf
cd /mydata/mysql/conf
touch my.cnf
vim my.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
skip-name-resolve
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

创建实例

  • 新版本( 5.7.19 及以上 )

shell   docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.41  

  • 旧版本

shell   docker run -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.41  

参数说明:

参数 说明
-p 3306:3306 将容器的3306端口映射到主机的3306端口
-name mysql 为当前启动的容器命名
-v /mydata/mysql/log:/var/log/mysql 将配置文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql 将日志文件夹挂载到主机
-v /mydata/mysql/conf:/etc/mysql 将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root 初始化root的密码
-d 后台运行
mysql:5.7.41 指定运行的镜像

设置随Docker自启

执行如下命令

docker update mysql --restart=always

连接测试

查看运行情况

输入如下命令查看mysql的运行情况

docker ps

连接测试

通过工具连接数据库测试

MySQL的配置

添加远程访问权限

进入MySQL 镜像

docker exec -it mysql /bin/bash

连接MySQL

输入如下命令,并输入密码后连接到MySQL

mysql -u root -p

配置远程访问

-- 选择数据库
use mysql;
-- 赋予root远程访问权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;

-- 创建用户
create user 'test'@'localhost' identified by 'Test_pwd';
create user 'test'@'%' identified by 'Test_pwd';
-- 赋予权限
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' IDENTIFIED BY 'Test_pwd' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' IDENTIFIED BY 'Test_pwd' WITH GRANT OPTION;
## 刷新权限
FLUSH PRIVILEGES;

验证远程访问权限

select host,user,authentication_string from mysql.user;


远程访问需要开放Linux防火墙对应的端口号,请关闭防火墙或者将对应的端口号进行放行操作。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。