文档背景
本文适用于对Docker基本操作比较熟练的童孩
#默认拉取最新的镜像
docker pull mysql
前提:
下面指令是为了让MySQL表大小写不明感,并且方便修改容器配置
docker run -it -d -p 3306:3306 -v /home/DockerFiles/apps/MySQL/etc:/etc -v /home/DockerFiles/apps/MySQL/home:/home -v /home/DockerFiles/apps/MySQL/var:/var --name mysql_v --restart=always -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.11 --lower_case_table_names=1
参数介绍
将待映射的文件复制出来
docker cp ct_name:/etc ./
docker cp ct_name:/home ./
docker cp ct_name:/var ./
docker start 容器名/容器id
# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) -d 6a7ce7768bb1表示容器id 这里也可以是名称
docker exec -it -d 6a7ce7768bb1 /bin/bash
mysql -u root -p123456
然后输入密码即可
注意! 这里可能登录异常,这是因为数据库里root的用户并不允许你输入的密码进行登录。
所以我们要重新修改一下root用户的密码(如果登录成功就不用管了下面免密操作的配置了)
查看是否大小写敏感
SHOW GLOBAL VARIABLES LIKE "%lower%"
查看全局字符变量配置
SHOW VARIABLES LIKE 'char%';
更改字符集
如果不是我们想要的utf8的字符集的话,就去修改/etc/mysql/my.cnf 添加配置
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
更改时区
# 进入容器 输入指令
ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 或者在创建容器时增加时间文件夹的映射
-v /etc/localtime:/etc/localtime:ro
一般都在my.cnf里修改,如果不在mysql文件夹里就找找看别的文件夹里有没有
vim /etc/mysql/my.cnf
docker一般不会下载vim编辑器,所以我们下载一下vim
#先执行第一步
apt update
#然后执行
apt-get install vim
下载好之后就可以用vim了
直接在文件最下面加上,表示免密了
[mysqld]
skip-grant-tables
再登录
mysql -u root -p [这里随便输入什么密码都可以]
之前版本较老的password为密码现在是authentication_string
#选择mysql内置数据库
use mysql;
#执行一下SQL语句
update user set authentication_string=password("password") where User='root';
OK,这样的话我们就可以使用密码登录了,然后我们去吧免密登录删掉就可以完成密码登录了
查看用户可以在哪些IP上登录
SELECT user,host from user;
如果host :'%'表示这个用户可以用任意IP登录
所以设置root的host为%,那么root用户就可以在任意IP上进行登录访问了
my.cnf中修改一些只读的参数会导致Docker无法启动。
所以 我们有映射文件,可以去修改映射文件让数据库恢复