在docker中安装mysql
1.拉取镜像
java
docker pull mysql 8.0.21 //拉取的是8.0.21版本
docker pull mysql //拉取的是latest
2.创建文件夹 挂载数据卷用
java
mkdir -p /data/mysql/{conf,data} //在data文件夹下的mysql文件夹下创建两个文件夹分别是 conf,data
3. 配置my.cnf文件
my.cnf文件内容 将my.cnf放到conf目录下面
java
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
symbolic-links=0
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
##下面为添加的自定义配置
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
sql_mode= STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet=10M
default-time_zone='+8:00'
default_authentication_plugin=mysql_native_password
#主数据库配置
log-bin=mysql-bin
server-id=1
data目录是数据保存到宿主机中,下次需要的时候重启容器,原有数据都能被加载,不会丢失数据
4.创建mysql容器
java
--docker创建mysql容器
docker run -d --name mysql -m 5g --network=prod-net --ip=10.25.100.1 -p 3306:3306 -v /data/mysql/conf/my.cnf:/etc/my.cnf -v /data/mysql/data:/var/lib/mysql --privileged=true --restart=always -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai mysql:8.0.21
java
参数介绍
< -d 后台运行
< -mane 容器名称
< -m 设置容器使用内存最大值
< --network docker网络名称
< --ip 指定网络
< -p 指定端口映射 格式为: 主机port:容器port
< -v 绑定一个卷
< --restart=always 自启动
< --privileged=true 赋予容器几乎与主机相同的权限
< -e 设置环境变量
5.修改mysql允许Navicat远程连接
1.进入mysql容器
java
docker exec -it mysql /bin/bash
2.登录mysql服务器,之后输入mysql密码:123456 创建容器时设置的密码
java
mysql -u root -p;
3给用户授权
java
//mysql8.0以前的
grant all privileges on *.* to root@'%' identified by '123456';
//8.0 以后的
grant all privileges on *.* to root@'%';
4.更新权限后,外部就可以使用native之类的连接软件进行连接了
java
flush privileges;
5. 退出mysql
java
exit 或者 quit
6.退出容器
java
exit