mac通过docker一键部署MySQL8

mac通过docker一键部署MySQL8

一、前言

程序猿开发任务本来就比较繁锁,如果搭建各种开源的软件还需要搜索这样那样的配置,那基本上两鬓斑白的头发基本上都快脱光了,如何找女朋友呢?难道一直和五姑娘为伴?所以自己当第一个吃螃蟹的人摸索了一些套路,编写一些简易的 shell 脚本帮我们快速的搭建服务器,猿们只要按着套路“一步一步”的操作,基本上都可以快速部署服务,也有《MySQL8自动安装脚本》,大家根据自己的实际情况进行操作。

二、系统配置

mac os:Monterey
mac version:12.4 (21F79)
mac type: MacBook Air (M1, 2020), Apple M1

docker desktop version:v4.10.0 
docker version:v20.10.17
docker-compose version: v1.29.2

三、安装步骤

1、Dockerhub查看镜像地址

# 如果你比较懒可以使用最后的“MySQL8自动安装脚本”,mac电脑通用
https://hub.docker.com/_/mysql/tags

2、一键安装

2.1、克隆脚本

git clone git@gitee.com:xiaoyaojiugui/technical.git

2.2、安装程序

# 1.跳转到下载脚本的根目录,执行命令:
cd /technical/docker/foundations/database/mysql

# 2.执行安装脚本,执行命令:
sh ./mysql.sh

# 3.选择待安装的 MySQL 序号
2.2.1、程序安装详情
---------------函数开始执行---------------

-------------环境变量初始化开始-------------
1.1、请选择要安装的 MySQL 版本,例如:MySQL8,输入“1”回车。
1、MySQL8 (Mac with Apple chip or Intel chip)
2、MySQL8 (Linux)
3、MySQL5
请输入序号: 
1

1.2、你选择了安装:MySQL8 (Mac with Apple chip or Intel chip)
1.3、初始化 MySQL 环境变量
image_alias=mysql8
image_name=mysql/mysql-server:latest
mysql_port=33306
os_path=/Users/jason.zhuo/data/docker/volumes/mysql8
-------------环境变量初始化完毕-------------

1.1、执行创建容器操作,跳过此步骤,镜像已存在[mysql/mysql-server:latest]
1.2、执行创建容器操作,创建目录并授权,执行命令:sudo mkdir -p -v /Users/jason.zhuo/data/docker/volumes/mysql8/{data,logs,conf} && sudo chown -R jason.zhuo /Users/jason.zhuo/data/docker/volumes/mysql8 
1.3、执行创建容器操作,创建文件my.cnf并将配置写到文件中[/Users/jason.zhuo/data/docker/volumes/mysql8/conf/my.cnf]
1.4、执行创建容器操作,执行命令:docker run -d -p 33306:3306 -d --restart=always --privileged=true -e MYSQL_ROOT_PASSWORD=root123456 -v /Users/jason.zhuo/data/docker/volumes/mysql8/conf/:/etc/mysql/conf.d/ -v /Users/jason.zhuo/data/docker/volumes/mysql8/data:/var/lib/mysql -v /Users/jason.zhuo/data/docker/volumes/mysql8/logs:/var/log/mysql --name mysql8 mysql/mysql-server:latest
1.5.1、查看容器状态,执行命令:docker inspect --format='{{.State.Status}}' mysql8
1.5.2、查看容器状态,[running]
1.5.3、查看容器详情,执行命令:docker ps | grep mysql/mysql-server:latest

2.1、其他待执行命令,登录容器其命令为:docker exec -it mysql8 mysql -uroot -proot
---------------函数执行完毕---------------

2.3、初始化用户

  • 初始化用户(admin)默认密码(admin123456);
  • 请在脚本中(create-user.sh),自行更改密码;
# 1.跳转到下载脚本的根目录,执行命令:
cd /technical/docker/foundations/database/mysql

# 2.执行安装脚本,执行命令:
sh ./create-user.sh

# 3.选择待安装的 MySQL 序号
2.3.1、程序安装详情
---------------函数开始执行---------------

-------------环境变量初始化开始-------------
1.1、请选择要安装的 MySQL 版本,例如:MySQL8,输入“1” 回车。
1、MySQL8 (Mac with Apple chip or Intel chip)
2、MySQL8 (Linux)
3、MySQL5 (通用)
请输入序号: 
1

1.2、你选择了安装:MySQL8 (Mac with Apple chip or Intel chip)
1.3、初始化 MySQL 环境变量
image_alias=mysql8
image_name=mysql/mysql-server:latest
mysql_port=33306
os_path=/Users/jason.zhuo/data/docker/volumes/mysql8

-------------环境变量初始化完毕-------------

1、创建数据库用户(admin)并授权,执行命令:docker exec -it mysql8 mysql -uroot -proot123456
spawn docker exec -it mysql8 mysql -uroot -proot123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.27 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases; 
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

mysql> use mysql; 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> create user 'admin'@'localhost' identified by 'admin123456'; 
Query OK, 0 rows affected (0.02 sec)

mysql> grant all privileges on *.* to 'admin'@'localhost'; 
Query OK, 0 rows affected, 1 warning (0.01 sec)

mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec)

mysql> create user 'admin'@'%' identified by 'admin123456'; 
Query OK, 0 rows affected (0.00 sec)

mysql> grant all privileges on *.* to 'admin'@'%'; 
Query OK, 0 rows affected (0.01 sec)

mysql> flush privileges; 
Query OK, 0 rows affected (0.00 sec)

mysql> select host, user, plugin from user; 
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | admin            | caching_sha2_password |
| localhost | admin            | caching_sha2_password |
| localhost | healthchecker    | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
7 rows in set (0.00 sec)

mysql> exit
Bye
2、成功创建数据库用户:admin
---------------函数执行完毕---------------

3、测试数据库是否连接成功

image

四、后记

自动化脚本安装完成后,本地的 MySQL8 基本上就可以随便玩,文章如有不对之处请留言,会及时修正,谢谢阅读!!

所有文章均为本人原创,本人写作的目的就是想帮助对技术有需要的人,所以欢迎同行转载本站文章,但是,希望您注明来源,并留下原文链接地址,这是对文章作者的尊重,也是对知识的尊重。

posted @ 2022-10-08 10:55  逍遥酒鬼  阅读(830)  评论(0编辑  收藏  举报