docker 安装mysql
docker 环境 是 CentOS 8.1
拉取镜像
docker pull mysql:8.0.36
在宿主机创建持久化 mysql data 及mysql.cnf 数据目录和配置文件目录 日志目录
mkdir -p /docker-root/mysql_3308/conf.d
mkdir -p /docker-root/mysql_3308/data
mkdir -p /docker-root/mysql_3308/logs
挂载到 mnt 文件存储NAS上
mkdir -p /mnt/docker-root/mysql_3308/conf.d
mkdir -p /mnt/docker-root/mysql_3308/data
mkdir -p /mnt/docker-root/mysql_3308/logs
如果是liunx系统 添加配置文件
/docker-root/mysql/conf.d 目录下加配置文件 mysql.cnf 内容如下
[mysqld]
lower_case_table_names=1
如果要修改默认的3306端口号为3308
MySQL连接慢问题解决 配置项添加 skip-name-resolve
有一个非常慢的DNS和许多主机,您可以通过使用-skip-name-resolve禁用DNS解析
配置文件中添加
[mysqld]
lower_case_table_names=1
port=3308
skip-name-resolve
运行容器
docker run --name mysql_docker --restart=always -d -p 3306:3306 -v /docker-root/mysql_3308/conf.d:/etc/mysql/conf.d -v /docker-root/mysql_3308/logs:/logs -v /docker-root/mysql_3308/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.32
挂载到 mnt目录 并且端口号改为3308
docker run --name mysql-3308 --restart=always -d -p 3308:3308 -v /mnt/docker-root/mysql_3308/conf.d:/etc/mysql/conf.d -v /mnt/docker-root/mysql_3308/logs:/logs -v /mnt/docker-root/mysql_3308/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --default-authentication-plugin=mysql_native_password mysql:8.0.36
命令说明
run 运行一个docker容器
--name 后面这个是生成的容器的名字mysql_docker
-p 3306:3306 表示这个容器中使用3306(第二个)映射到本机的端口号也为3306(第一个)
-e MYSQL_ROOT_PASSWORD=123456 初始化root用户的密码
-d 表示使用守护进程运行,即服务挂在后台
-v 表示挂载宿主机目录 到容器目录 conf.d 配置目录 logs 日志目录 data 数据目录
--default-authentication-plugin=mysql_native_password docker的方式启动mysql8修改默认加密方式
进入MySQL容器,
docker exec -it mysql_docker /bin/bash
登陆mysql
mysql -u root -p
Enter password: #输入 初始化密码 123456
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.20 MySQL Community Server - GPL
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
1,容器中登录mysql,查看mysql的版本
mysql> status;
mysql Ver 8.0.20 for Linux on x86_64 (MySQL Community Server - GPL)
2,进行授权远程连接(注意mysql 8.0跟之前的授权方式不同)授权
mysql> GRANT ALL ON *.* TO 'root'@'%';
刷新权限
mysql> flush privileges;
此时,还不能远程访问,因为Navicat只支持旧版本的加密,需要更改mysql的加密规则
更改加密规则
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;
更新root用户密码
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'MySQL2019&';
刷新权限
mysql> flush privileges;
OK,设置完成,再次使用 Navicat 连接数据库
退出mysql数据库
mysql> exit;
退出当前mysql容器
exit;
优化mysql所用内存
通过docker查看容器使用内存情况
docker stats
一般情况下,默认装的Mysql是8.0以上,占用内存在350M以上,这个对于小机器来说,占比还是比较大的,可以优化。
进入文件夹
cd /home/docker/mysql/conf.d/
查看 .cnf 文件,如果没有,随便新建个,例如
vim my.cnf
输入内容,并保存
[mysqld]
performance_schema = OFF
重启mysql 容器
docker restart mysql 容器的id
再查看
docker stats
清理linux中buff/cache过大的方法
第一步:sync先同步一下
sync
第二步:清cache
echo 3 > /proc/sys/vm/drop_caches