Docker安裝配置MySQL的實現步驟

前言

MySQL 是世界上最受歡迎的開源數據庫,So~本文將演示如何在Docker上安裝並且配置MySQL。

在這裡插入圖片描述

環境

  • CentOS 7
  • Docker 20.10.10

安裝

拉取鏡像

docker pull mysql

如果要指定版本,在mysql後面加上:+版本號,例如:

docker pull mysql:8.0.16

這裡直接拉取最新版MySQL

在這裡插入圖片描述

查看鏡像

docker images

在這裡插入圖片描述

創建並啟動MySQL容器

創建數據目錄和配置文件

提前在宿主機創建好放置mysql的配置文件的目錄和數據目錄,並且進行授予權限,避免掛載外部配置和數據時啟動失敗:

在這裡插入圖片描述

創建放置mysql的配置文件的目錄和數據目錄

mkdir -p /mydata/mysql/

設置文件夾權限

chmod -R 755 /mydata/mysql

第一個數字表示文件所有者的權限 第二個數字表示與文件所有者同屬一個用戶組的其他用戶的權限 第三個數字表示其它用戶組的權限。
權限分為三種:讀(r=4),寫(w=2),執行(x=1) 。
綜合起來還有可讀可執行(rx=5=4+1)、可讀可寫(rw=6=4+2)、可讀可寫可執行(rwx=7=4+2+1)。 所以,chmod
755 設置用戶的權限為:
1.文件所有者可讀可寫可執行 –7
2.與文件所有者同屬一個用戶組的其他用戶可讀可執行 –5
3.其它用戶組可讀可執行

創建my.cnf配置文件

mkdir -p /mydata/mysql/conf
touch /mydata/mysql/conf/my.cnf

編輯my.cnf配置文件

vi /mydata/mysql/conf/my.cnf

添加以下配置內容

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
secure_file_priv=/var/lib/mysql

提醒

無論你是否使用我的配置,如果你的安裝的是新版MySQL,務必要復制這一句:

secure_file_priv=/var/lib/mysql

第一次創建啟動MySQL容器的時候,MySQL會訪問/var/lib/mysql文件夾,如果沒有權限就會導致無法啟動,使用docker ps之後看不到mysql容器在運行,需要設置secure_file_priv的值指定為/var/lib/mysql,這樣就有權限正常訪問和讀寫/var/lib/mysql目錄

Failed to access directory for –secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Suppliedvalue : /var/lib/mysql-files
譯文:無法訪問–secure-file-priv的目錄。請確保該目錄存在並且可由MySQL服務器訪問。提供的值:/var/lib/mysql文件

  • secure_file_priv的值為null ,表示限制mysqld 不允許導入|導出
  • secure_file_priv的值為/tmp/ ,表示限制mysqld 的導入|導出隻能發生在/tmp/目錄下
  • secure_file_priv的值為空,表示不對mysqld 的導入|導出做限制

創建並啟動MySQL容器命令

sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:latest

參數說明:

  • -p 3306:3306:將容器的3306端口映射到主機的3306端口
  • --name mysql:定義容器名稱為mysql
  • -v /mydata/mysql/log:/var/log/mysql :將MySQL的日志文件夾掛載到主機
  • -v /mydata/mysql/data:/var/lib/mysql:將MySQL的數據文件夾掛載到主機
  • -v /mydata/mysql/conf:/etc/mysql:將MySQL的配置文件夾掛載到主機
  • -e MYSQL_ROOT_PASSWORD=root:初始化root用戶密碼
  • -d mysql:latest:選擇MySQL版本為latest的鏡像構建容器

在這裡插入圖片描述

查看正在運行的容器

docker ps

在這裡插入圖片描述

進入到MySQL容器內部進行配置

進入命令

docker exec -it 容器id ./bin/bash

在這裡插入圖片描述

連接MySQL

這裡因為我們自己設置的MySQL默認密碼為root所以p後面為root

mysql -uroot -proot

在這裡插入圖片描述

更改MySQL密碼

使用mysql庫

use mysql

修改訪問主機以及密碼等,設置為所有主機可訪問

 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

註意:mysql_native_password,mysql8.x版本必須使用這種模式,否則navicate無法正確連接

測試連接

測試前請保證關閉瞭防火墻,如果是雲服務器記得開放3306規則

Linux關閉防火墻

# 關閉
systemctl stop firewalld
# 禁止開機啟動防火墻
systemctl disable firewalld

雲服務開放3306端口

在這裡插入圖片描述

使用Navicat測試連接

在這裡插入圖片描述

使用SQLyog測試連接

在這裡插入圖片描述

Docker安裝和配置MySQL教程結束!

以上就是Docker安裝配置MySQL的實現步驟的詳細內容,更多關於Docker 安裝MySQL的資料請關註WalkonNet其它相關文章!

推薦閱讀: