1. mysql的安装
docker pull mysql #直接执行,会下载最新版本的mysql
docker pull mysql:8.0.16 #可以指定版本号
2. 在本地创建文件夹
找一个合适的文件夹,创建下面这些文件夹以及文件
创建文件夹:mkdir -p /usr/mysql/conf /usr/mysql/data /usr/mysql/logs /usr/mysql/mysql-files
创建文件:vim /usr/mysql/conf/my.cnf
my.cnf文件的内容
[client]
default-character-set=utf8mb4
[mysqld]
datadir = /usr/mysql/data
character_set_server=utf8mb4
collation_server=utf8mb4_bin
lower_case_table_names=1
secure-file-priv=NULL
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
3. 指定创建的mysql文件夹的权限
chmod -R 755 /usr/mysql
4. 创建自己的mysql容器
docker run -p 3306:3306 --name mysql --restart=unless-stopped -d -v /usr/mysql/conf/my.cnf:/etc/mysql/my.cnf -v /usr/mysql/data:/var/lib/mysql -v /usr/mysql/logs:/logs -v /usr/mysql/mysql-files:/var/lib/mysql-files -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=123456 mysql
5. 查看mysql-docker容器的id
docker ps
6. 进入mysql容器
docker exec -it 容器id bash
或者
docker exec -it 容器id /bin/bash
7. 设置远程连接
mysql -uroot -p
use mysql
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';
flush privileges
解释说明:
-p 端口映射
--restart unless-stopped 设置 开机后自动重启容器
-v /usr/mysql/conf/my.cnf:/etc/mysql/my.cnf 挂载配置文件
-v /usr/mysql/logs:/logs \ 挂载日志
-v /usr/mysql/data:/var/lib/mysql \ 挂载数据文件 持久化到主机
-v /usr/mysql/mysql-files:/var/lib/mysql-files MySQL8之后需要同步这个文件夹
-v /etc/localtime:/etc/localtime 容器时间与宿主机同步
-e MYSQL_ROOT_PASSWORD=123456 设置密码
-d 后台启动,mysql
拷贝数据库
docker cp *.sql mysql:/home 复制sql文件到容器内
docker exec -it mysql /bin/bash 进入容器
cd home 进入复制的路径
mysql -uroot -p 后输入密码123456 进入数据库
show global variables like '%lower_case%'; 查看mysql是否大小写敏感,linux默认敏感,win默认不敏感
create database 数据库名; 创建数据库
use 数据库名; 切换到对应数据库
source *.sql 执行sql脚本
select * from sys_user; 测试查询
exit 退出