0%

Mysql进阶--Docker安装Mysql

Docker中安装Mysql镜像。

1.首先照例查看服务器是否已经安装了mysql,执行命令查看,如果安装了回打印路径,没有安装则无提示,

1
rpm -qa | grep mysql

image-20201111153336249

2.使用docker拉取mysql5.7,因为这是最稳定的版本,Docker安装不会的请参看redis在docker中的使用,不使用docker安装mysql8.0请参看阿里云安装mysql,直接执行命令,

1
docker pull mysql:5.7

image-20201111153918232

image-20201111154946580

3.mysql5.7的镜像已经安装完成,然后直接创建一个实例并运行,执行命令,

1
2
3
4
5
6
docker run -p 3306:3306 --name mysql \
-v /home/user/mysql/conf:/etc/mysql \
-v /home/user/mysql/logs:/var/log/mysql \
-v /home/user/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

image-20201111155009782

4.进入conf文件夹,新建mysql.conf配置文件,添加mysql的配置文件,

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
[client]
//mysqlde utf8字符集默认为3位的,不支持emoji表情及部分不常见的汉字,故推荐使用utf8mb4
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
//设置client连接mysql时的字符集,防止乱码
init_connect='SET collation_connection = utf8_general_ci'
init_connect='SET NAMES utf8'

//数据库默认字符集
character-set-server=utf8

//数据库字符集对应一些排序等规则,注意要和character-set-server对应

//跳过mysql程序起动时的字符参数设置 ,使用服务器端字符集设置
skip-character-set-client-handshake

//这是几个重点需要设置的,涉及到docker下mysql的编码问题,方便复制:
[mysqld]
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

5.设置实例开机启动,

1
docker update --restart=always 实例ID/name

6.进入mysql容器,并登录,执行命令,

1
2
3
docker exec -it mysql /bin/bash //进入容器

mysql -uroot -p //运行mysql

7.上述的进入容器本身是没有问题的,但是不支持中文啊,mysql难免需要输入中文,头疼,查了许久,修改命令,

1
docker exec -it mysql env LANG=C.UTF-8 /bin/bash

image-20201112100130712

image-20201112092648977

8.docker下没问题了,就尝试远程连接,使用windows下的可视化工具连接一下,并建一个数据库和表测试,连接的话,就是连接阿里云的公网ip,端口3306,

image-20201112092809303

9.再进入docker下的mysql,查看数据库和表,数据是否正确,

image-20201112092951220

总结,别笑话,这编码我弄了好久,我试了很久,查看日志也一直是没有报错信息,我查看了docker运行mysql的内部配置文件,也是没问题的,其实最后好的也莫名奇妙,因为这个配置我最开始就试过,但是还是没法输入中文,就算我在navicat中建表输入中文都会报错,但是莫名又好了,这是一次糟糕的情况,因为没找到问题,也一头雾水的好了(手动黑脸)。

----------本文结束感谢您的阅读----------