1、安装MySQL
以下安装可能会有Navicat (版本不兼容)连接不上问题:
建议直接跳到 3、指定版本安装。如果已经安装了也阔以走这一步
不用跳过也行,以下也有避免方法:
docker run -d \
--name mysql \
-p 3306:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=root \
mysql //改为:mysql:5.7 就是指定版本安装
命令解读:
docker run :创建并运行-一个容器,-d是让容器在后台运行
--name 起名
-p 端口映射 前面是宿主机(此处可指 linux)端口 后者是容器端口
-e 设置环境变量
MYSQL_ROOT_PASSWORD=root root用户密码为root
mysql 指定运行的镜像名字,
正常情况后面跟上版本号:没写默认最新版
mysql:5.7
1-1、可能遇到端口被占用
原因:你的 linux 中安装过mysql,产生了冲突,解决办法就是修改上述命令的端口
docker run -d \
--name mysql \
-p 3307:3306 \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=root \
mysql
2、Navicat for MySQL 访问 docker 的 MySQL
2-1、连接
2-2、可能遇到的错误
原因可能是版本不兼容之内的–》多半应该是docker安装mysql版本过高
2-2-1、如何判断是不是以上原因
2-2-2、解决思路
1、Navicat for MySQL 更新,使其能够兼容
2、docker 删除 mysql 安装指定的低版本使其兼容
3、不做任何处理,直接用mysql语句(舍弃界面)
4、进入docker的MySQL修改插件,如果你在 2-2-1 没报错说明你成功了,再尝试Navicat 连接
5、下载指定版本,换一个端口号
3、指定版本安装
3-1、命令
1)安装MySQL
docker pull mysql:5.7
2)运行MySQL镜像
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql镜像ID
-p 后面的端口是本机端口,映射到docker中MySQL的3306端口,后面设置了root密码
-d 是后台运行
3)查看容器ID
docker ps
4)上传数据库脚本到Linux,然后将脚本复制到docker的root目录中
docker cp bookdb.sql 21db7dd6618e:\root
5)进入docker容器
docker exec -it 21db7dd6618e bash
6)进入MySQL
mysql -uroot -p123456
7)设置编码、创建数据库
set names utf8;
create database bookdb;
use bookdb;
8)导入sql脚本
source /root/bookdb.sql;
9)修改远程访问权限:
select host,user,plugin,authentication_string from mysql.user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
flush privileges;
- 退出mysql和docker
exit
3-2、步骤图
如果不是mysql_native_password
修改远程访问权限插件:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root'; //注意这里改为root
flush privileges;