Docker 安裝 MySQL、Redis

1 Docker 中安裝 Redis

1.1 創建目錄

在硬盤上創建 redis 的數據目錄:

mkdir -p /Users/yygnb/dockerMe/redis/data

為該目錄添加權限:

chown 200 -R /Users/yygnb/dockerMe/redis

1.2 拉取鏡像

搜索鏡像:

docker search redis

搜索結果:

image-20220828234855466

拉取官方鏡像:

docker pull redis

1.3 啟動容器

映射端口 6379 和 data 目錄,啟動容器:

docker run -itd -p 6379:6379 \
           -v /Users/yygnb/dockerMe/redis/data:/data \
           --restart always \
           --name redis \
           redis

1.4 查看 Redis 狀態

docker ps -a | grep redis

Redis 容器運行後,可以通過 RDM 等客戶端工具嘗試連接。

2 Docker 中安裝 MySQL

2.1 創建目錄

在硬盤上分別創建 conf(配置文件目錄)、data(數據文件目錄)、logs(日誌文件目錄):

mkdir -p /Users/yygnb/dockerMe/mysql/conf /Users/yygnb/dockerMe/mysql/logs /Users/yygnb/dockerMe/mysql/data

為上面三個目錄添加權限:

chown 200 -R /Users/yygnb/dockerMe/mysql

2.2 拉取鏡像

docker search mysql

搜索結果:

image-20220828233034166

拉取官方鏡像:

docker pull mysql

2.3 創建配置文件

進入上面創建的 mysql/conf 目錄下,創建配置文件 my.cnf

cd /Users/yygnb/dockerMe/mysql/conf
touch my.cnf
vi my.cnf

配置文件 my.cnf 內容如下:

# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 
#
# The MySQL  Server configuration file.
#
# For explanations see
# //dev.mysql.com/doc/mysql/en/server-system-variables.html

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4
 
[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
max_connections=10000
default-time_zone='+8:00'
character-set-client-handshake=FALSE
character_set_server=utf8mb4
collation-server=utf8mb4_general_ci
init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_general_ci'
 
# Custom config should go here
!includedir /etc/mysql/conf.d/

2.4 啟動容器

啟動容器,指定3306 端口映射和上面的三個目錄映射,同時也指定 MySQL root 賬戶的密碼為 Mysql.123

docker run --name mysql \
  --restart=always \
  -p 3306:3306  \
  -v /Users/yygnb/dockerMe/mysql/conf/my.cnf:/etc/mysql/my.cnf \
  -v /Users/yygnb/dockerMe/mysql/data:/var/lib/mysql \
  -v /Users/yygnb/dockerMe/mysql/logs:/logs \
  --privileged=true \
  -e MYSQL_ROOT_PASSWORD=Mysql.123 \
  -d mysql:latest

2.5 查看 MySQL 狀態

docker ps | grep mysql

2.6 修改 MySQL 權限

容器啟動後,可以進入容器修改 MySQL 的一些權限,使得外部可以連接。

進入容器:

docker exec -it mysql /bin/bash

登錄 MySQL:

mysql -u root -p

輸入上面設置的密碼 Mysql.123後便在命令行中進入了 MySQL。

依次執行下列 SQL 語句,修改權限:

use mysql; 

update user set authentication_string='' where user='root';

alter user 'root'@'%' IDENTIFIED BY 'Mysql.123';

grant all privileges on *.* to 'root'@'%' with grant option;

flush privileges;

全部執行完畢後,可以嘗試使用 MySQL Workbench 或 IDEA 或 Navicat 連接 MySQL。

MySQL 8 的 JDBC 連接串一般格式為:

jdbc:mysql://127.0.0.1:3306/db_name?useUnicode=true&characterEncoding=utf8&useSSL=true

驅動為:

com.mysql.cj.jdbc.Driver

image

感謝你閱讀本文,如果本文給了你一點點幫助或者啟發,還請三連支持一下,點贊、關注、收藏,作者會持續與大家分享更多乾貨