Mac 通过Navicat访问本机Ubuntu虚拟上的MySQL数据库
Ubuntu基于docker安装MySQL数据库
通过docker容器技术安装mysql数据库:
docker安装
第一种方法从Ubuntu的仓库直接下载安装:
安装比较简单,这种安装的Docker不是最新版本,不过对于学习够用了,依次执行下面命令进行安装。
$ sudo apt install docker.io
$ sudo systemctl start docker
$ sudo systemctl enable docker
查看是否安装成功
$ docker -v
Docker version 18.09.7, build 2d0083d
第二种方法从Docker仓库下载安装:
1.更换国内软件源,推荐中国科技大学的源,稳定速度快(可选)
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
sudo apt update
2.安装需要的包
sudo apt install apt-transport-https ca-certificates software-properties-common curl
3.添加 GPG 密钥,并添加 Docker-ce 软件源,这里还是以中国科技大学的 Docker-ce 源为例
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable"
4.添加成功后更新软件包缓存
sudo apt update
5.安装 Docker-ce
sudo apt install docker-ce
6.设置开机自启动并启动 Docker-ce(安装成功后默认已设置并启动,可忽略)
sudo systemctl enable docker
sudo systemctl start docker
7.测试运行
sudo docker run hello-world
8.添加当前用户到 docker 用户组,可以不用 sudo 运行 docker(可选)
sudo groupadd docker
sudo usermod -aG docker $USER
9.测试添加用户组(可选)
docker run hello-world
解决docker使用过程中Get Permission Denied问题
解决方法1
使用sudo获取管理员权限,运行docker命令
解决方法2
docker守护进程启动的时候,会默认赋予名字为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
docker ps #测试docker命令是否可以使用sudo正常使用## 新的改变
docker安装MySQL
1.首先下载安装mysql镜像
docker pull mysql
2.用 docker images指令 查看docker镜像是否已下载mysql
3.使用docker ps -a 指令查看所有的容器
4.创建mysql容器,并启动
docker run --name meeting-manage -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql
备注 :–name 服务启动别名设置 -p端口映射 宿主机端口:镜像运行端口 -d 镜像名:tag 使用守护进程模式启动 -e:设置root帐号密码
5.用docker ps 指令查看启动的docker容器
备注:后期启动电脑后,用docker ps指令会查询不到启动的容器,可以先用docker ps -a 查看是否已创建容器,如果已存在,则通过以下指令启动/停止mysql容器
docker start meeting-manage #启动名为meeting-manage的容器
docker stop meeting-manage #停止名为meeting-manage的容器
如果docker中存在不需要的容器信息,可以通过以下指令进行删除容器
docker rm meeting-manage #删除名为meeting-manage的容器
docker操作MySQL
1.进入镜像 运行mysql
#docker exec -it mysql8.0 /bin/bash
备注:exec docker进入容器命令
-it 容器中服务别名
/bin/bash 表示命令行模式 与 -d 后台守护进行模式启动 形成两种运行方式
进入容器中如图所示变化如下
2.进入系统预装的可执行程序文件夹下
cd /usr/bin
3.进入MySQL
mysql -u root -p
备注:mysql命令,mysql -h主机地址 -u用户名 -p密码
Mac访问虚拟机上的MySQL数据库
Mac设定(ParallelsDesktop15)
parallels端口映射设定,Mac的3306端口映射到Ubuntu虚拟机上的3308端口,
Ubuntu的docker容器对外映射的端口是3308端口
Navicat访问数据及问题解决
直接添加本地地址和端口信息就可以
备注:连接数据库时报错2059错误,发生此错误的原因是从mysql5.7版本之后,默认采用了caching_sha2_password验证方式。需要改成mysql_native_password验证方式
修改方法如下:
1.进入到mysql数据库内
2.查看当前root用户对应的插件
SELECT `user`, `host`, `authentication_string`, `plugin` FROM mysql.user;
3.修改root账号的密码验证插件类型为mysql_native_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下host为localhost对应root用户的密码
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下host为%对应的root用户的密码
FLUSH PRIVILEGES; #刷新权限
4.查看修改后的结果
SELECT `user`, `host`, `authentication_string`, `plugin` FROM mysql.user;
连接成功