avatar

目录
Docker安装Mysql详细步骤

Docker安装Mysql详细步骤

一、安装Docker环境

官网:Install Docker Engine on CentOS

安装Docker环境看官网文档吧,在此不做赘述。

二、安装Mysql

docker pull mysql/mysql-server:latest

官网:DockerHub mysql

#创建mysql01容器
Code
1
2

docker run -d -p 3306:3306 -e MYSQL_USER="haojy" -e MYSQL_PASSWORD="rootroot" -e MYSQL_ROOT_PASSWORD="root" --name mysql01 mysql/mysql-server --character-set-server=utf8 --collation-server=utf8_general_ci
#参数解读
d 后台运行
p 端口映射
MYSQL_USER 创建的用户
MYSQL_PASSWORD 用户密码
MYSQL_ROOT_PASSWORD root用户密码
name 容器名 镜像名
character 数据库字符集
collation-server 数据库排序规则

#1.查看mysql01容器运行日志
docker logs mysql01

#2.进入mysql01容器
docker exec -it  mysql01 bash

#3.连接到mysql
mysql -u haojy -p

#4.输入密码:`rootroot`

#5.查看用户数据
select host,user,plugin from mysql.user;

#6.查看字符集(utf8解决中文乱码)
show variables like '%char%';

1.navicat连接mysql报错

1.先通过命令行进入mysql的root账户:
mysql -u root -p

2.更改加密方式,修改密码(注意修改你要远程连接的用户)
ALTER USER 'haojy'@'%' IDENTIFIED WITH mysql_native_password BY 'rootroot';

3.刷新
FLUSH PRIVILEGES;

2.修改MYSQL 默认字符集

#1.修改my.cnf文件
vi /etc/my.cnf

#2.录入以下配置
[mysqld]
character-set-server=utf8

[client]
default-character-set=utf8 

[mysql]
default-character-set=utf8

#3.保存退出,重启容器
docker restart mysql01

3.mysql 挂载资料卷,在容器外操作mysql配置

#1.创建映射的文件目录
mkdir -p /docker/mysql/config/
mkdir -p /docker/mysql/config/data
cd /docker/mysql/config/
vi my.cnf

#2.录入以下配置
[mysql]
user=mysql
character-set-server=utf8

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

#3.1mount 方式挂载(推荐使用)
docker run -d -p 3306:3306 -
e MYSQL_USER="username" -
e MYSQL_PASSWORD="password"  -
e MYSQL_ROOT_PASSWORD="password"  --
mount type=bind,source=/docker/mysql/config/my.cnf,target=/etc/my.cnf     --
mount type=bind,source=/docker/mysql/config/data:/var/lib/mysql,target=/var/lib/mysql --
name mysql01 mysql/mysql-server

#3.2volume 方式挂载
docker run -d -p 3306:3306 --name mysql01 -v=/docker/mysql/config/my.cnf:/etc/my.cnf -v=/docker/mysql/config/data:/var/lib/mysql mysql/mysql-server 

#4.进入mysql01容器
docker exec -it  mysql01 bash

#5.连接到mysql
mysql -u haojy -p

#6.查看字符集
show variables like '%char%';

#7.字符集配置成功

4.如果镜像下载特别慢,请自行百度docker镜像加速

5.创建用户,设置权限

CREATE USER 'test'@'localhost' IDENTIFIED BY 'pwd123';
GRANT ALL PRIVILEGES ON *.* TO 'test'@'localhost' WITH GRANT OPTION;

CREATE USER 'test'@'%' IDENTIFIED BY 'pwd123';
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' WITH GRANT OPTION;

6.修改密码

#6.1 mysql5.7版本语法:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('password');

#6.2 mysql5.7之后版本语法:
ALTER user 'root'@'localhost' IDENTIFIED BY 'password'

官网:Configuring the MySQL Server

三、连接Mysql

1、使用Network方式连接Mysql

1.1 Bridge方式(单台)
#1.创建network
docker network create -d bridge mybridge

#2.查看network
docker network ls

#3.运行core01容器连接到mybridge网络
docker run -d -p 5000:5000 --net mybridge --name core01 mycore

#4.将mysql01连接到mybridge网络
docker network connect mysql01 mybridge

#5.查看mysql01网络
docker inspect mysql01

#6.查看core01网络
docker inspect core01

#7.docker内安装ping命令工具 
yum install iputils-ping 

appsetting.json文件

"ConnectionStrings":{
    "MysqlStr":"server=[IpAddress];port=3306;database=MysqlTest;userid=haojy;password=rootroot"
}

#1.改配置文件方式
[IpAddress] 替换成 mysql01 的 IpAddress地址



"ConnectionStrings":{
    "MysqlStr":"server=db;port=3306;database=MysqlTest;userid=haojy;password=rootroot"
}
#2.改容器名称
docker rename mysql01 db
1.2 Overlay方式(多台)

待补充…

网络桥接图

mysql

2、使用 Link方式连接Mysql

docker run -d -p 5000:5000 -name core01 mycore --link mysql01:db  

#验证数据库是否可以连接,可通过 ping db 检测 
docker exec -it core01 bash
ping db

appsetting.json文件

"ConnectionStrings":{
    "MysqlStr":"server=db;port=3306;database=MysqlTest;userid=haojy;password=rootroot"
}

博主博客:Docker部署NetCore

参考资料:Jesse腾飞 ASP.NET Core分布式项目实战

文章作者: HJY
文章链接: https://hjy-dev.github.io/2020/04/08/Docker%E5%AE%89%E8%A3%85mysql%E8%AF%A6%E7%BB%86%E6%AD%A5%E9%AA%A4/
版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明来自 Kiven Blog
打赏
  • 微信
    微信
  • 支付寶
    支付寶

评论