1.准备
拉取mysql镜像(这里以8.0.20版本为例)
docker pull mysql:8.0.20
2.挂载目录
新建宿主机本地目录:用来挂载MySQL容器所产生的数据的目录
mkdir -p /app/docker/mysql/standalone/{data,logs,conf}
创建mysql配置文件 my.cnf
cd /app/docker/mysql/standalone/conf
vim my.cnf
编辑内容如下:
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
[client]
default-character-set=utf8
3.启动容器
启动容器,创建MySQL实例
docker run -d -p 3306:3306 --privileged=true \
-v /app/docker/mysql/standalone/logs:/var/log/mysql \
-v /app/docker/mysql/standalone/data:/var/lib/mysql \
-v /app/docker/mysql/standalone/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql \
mysql:8.0.20
参数解释:
\
:这是换行符
-d
:后台运行
-p 3306:3306
:设置端口,前面端口是主机端口号,后面是容器端口
--privileged=true
: 设置容器的权限。让容器拥有宿主机的root权限
-v /app/docker/mysql/standalone/logs:/var/log/mysql
: 容器卷挂载(格式:-v 要挂载的主机路径:要被挂载的容器路径
)
-e MYSQL_ROOT_PASSWORD=123456
:设置MySQL的root密码,这里我设置的密码是123456
--name mysql
:给要创建的容器起个名,不起名的话就会默认生成一个名字,不好记
mysql:8.0.20
:要运行的镜像(可以用镜像名:版本号来指定也可以用镜像id)
注意:虚拟机搭建的系统需要开放端口
开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
4.docker内连接MySQL
4.1 进入mysql容器
docker exec -it mysql /bin/bash
4.2 登录MySQL
mysql -uroot -p
4.3 查询MySQL的字符编码
show variables like 'character%';
4.4 exit退出
exit退出mysql终端,exit退出docker容器
5.mysql创建账号
5.1 创建数据库
mysql> create database zmall;
Query OK, 0 rows affected (0.09 sec)
5.2 创建用户
mysql> create user 'zmall'@'%' identified by '123456';
Query OK, 0 rows affected (0.09 sec)
- zmall: 用户名;
- %:host;配置'%',表示所有的IP地址都可以访问;
- 123456:密码
5.3 授权用户
mysql> grant all privileges on zmall.* to 'zmall'@'%';
Query OK, 0 rows affected (0.10 sec)
5.4 刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
5.5 删除用户
drop user 'zmall'@'%' ;
flush privileges;
5.6 创建用户
create user 'blog'@'%' identified by '123456';
flush privileges;
5.7 申明权限
grant all privileges on blog.* to 'blog'@'%' with grant option;
flush privileges;
# grant select,insert,update,delete on *.* to 'test1'@'localhost';
评论区