Docker MySQL MacOS下安装及各种问题解决

macos bigsur最新版本

1. MacOS下安装Docker

1.1 使用Homebrew安装

brew install --cask --appdir=/Applications docker
Password:          # 输入 macOS 密码
安装完成

1.2 手动下载安装(小白推荐)

如果需要手动下载,请点击以下链接下载 Stable 的 Docker for Mac。

安装完成后就一步一步完成向导即可,此时不需要进行别的任何操作。

2. 镜像加速

网上太多教程了,可以搜一下关键词 ”Docker镜像加速“

3. 在Docker中安装MySQL

3.1 查看可用版本

docker search mysql

3.2 下载并安装MySQL镜像

docker pull mysql:latest
或
docker pull mysql
## 哪个可以下载用哪个

如图安装完之后的样子。
在这里插入图片描述

3.3 查看本地镜像

docker images

如图表明已经安装最新版(latest)的mysql镜像。
在这里插入图片描述

3.4 运行mysql容器

docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

参数说明:

  1. p 3306:3306 :映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。
  2. MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码。

3.5 安装成功

docker ps命令查看是否安装成功

docker ps

在这里插入图片描述

4.日常启动MySQL

  1. 打开docker;

  2. 点击 Containers/Apps,运行mysql-test(如下图所示);
    在这里插入图片描述

  3. 终端命令行输入 docker exec -it mysql-test bash 启动mysql容器;

  4. 终端命令行输入mysql -uroot -p登录mysql, 输入密码(前面设置的是123456),成功的界面如下图所示,显示 mysql>
    在这里插入图片描述

  5. show databases; 查看内置数据表;
    在这里插入图片描述

5.安装sql管理工具Navicat

Navicat可以使数据库管理更加高效,官网下载链接,官方可以白嫖试用14天,永久版可以去某鱼买一个,较便宜。

在这里插入图片描述
安装后主界面如下图

在这里插入图片描述
连接docker mysql步骤:

  • 点击左上角Connection, 选择MySQL;
    在这里插入图片描述
  • name随便命名, 密码之前设置的123456, 其他不变默认即可;
    在这里插入图片描述
  • 完成后的界面如下图所示;
    在这里插入图片描述
    完成到这里就可当一个快乐的sqlboy了~~!

5.出现问题及解决方案

虽然在docker安装好mysql,但是还存在一些较难问题,如:

  • 新建了一个表,在Navicat中填入相应数据信息,如有中文字符,在mac终端命令行无法正常显示,多显示为**’?’**;
  • 新建了一个表,如不在Navicat填入数据,在**mysql>**命令行中insert into语句插入数据信息,中文字符不可输入,但正常终端命令行界面可以输入。

5.1中文字符显示乱码(多显示为’?’)

如下图所示(已经解决了,所以显示正常)。
在这里插入图片描述
问题描述:

select * from Student;
查看mysql数据中文显示乱码, 如上图

解决方案:

  • 进入docker容器;
docker exec -it 【容器id或名称】 bash
  • 登录mysql数据库;
mysql -uroot -p
  • 查看外部连接层编码;
    出现问题一般显示为’latin1_swedish_ci’类似信息,也就是未出现’utf-8’相关字样。
SHOW VARIABLES LIKE 'collation_%';

在这里插入图片描述

  • 查看数据库字符集;
SHOW VARIABLES LIKE 'character_set_%';

出现问题一般显示 客户端与连接默认都是latin1。
正常如下图:
在这里插入图片描述

  • 先设置外部访问乱码问题;
SET NAMES 'utf8';
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;

执行完毕后,还需要修改一个mysql配置文件。

  • 关闭终端,重新开启一个,进入容器,如需登录;
docker exec -it mysql-test bash
  • 进入配置文件mysql.cnf所在目录;
cd etc/mysql/mysql.conf.d/
ls
cat mysql.cnf

如下图所示。
在这里插入图片描述

  • vim命令修改该配置文件
    注:
    使用vim命令修改配置文件 , 但可能有人需要在容器内安装vim命令,所以先试一下有没有安装vim,如果已在docker内安装vim命令请跳过此步骤, 如果没有(vim时提示vim: command not found)的话需要执行此步骤。
apt-get update
apt-get install vim
vim mysql.cnf

将内容增加为:

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
default-character-set = utf8

[mysql.server]
default-character-set = utf8
[mysqld_safe]
default-character-set = utf8
[client]
default-character-set = utf8

复制粘贴后,按esc,输入:wq保存并退出。

  • 重新进入mysql查看编码;
SHOW VARIABLES LIKE 'collation_%';
SHOW VARIABLES LIKE 'character_set_%';

如下图。
在这里插入图片描述
在这里插入图片描述
成功解决。

5.2插入数据不显示中文

问题描述:

select * from Student;
insert into Student(Sno,Sname,Sex,Sage,Sdept) values('201215127','王五'........)
mysql>命令行插入一条数据,输入法可以候选文字,但不可在命令行上输入显示, 如上图

在这里插入图片描述
在这里插入图片描述
解决方案:

  1. 最简单的一种方式,登录mysql前输入export LANG=C.UTF-8命令;
  2. 或进入docker容器时,输入docker exec -it 容器名称/id env LANG=C.UTF-8 /bin/bash
    如下图。
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值